开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

问下 Flink中hudi 写入s3的时候设置压缩了,生成parquet.marker.APPEN?

问下 Flink中hudi 写入s3的时候设置压缩了,生成parquet.marker.APPEND log也有 没有生成单独的.parquet文件呢?

展开
收起
cuicuicuic 2023-07-25 20:30:59 110 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    用 Hudi 写入 S3 时,可以通过设置 hoodie.parquet.compression.ratio 参数来控制写入数据时使用的压缩算法和压缩比例。默认情况下,Hudi 使用 Snappy 压缩算法来压缩数据,可以通过设置该参数来更改压缩算法和压缩比例。
    另外,在使用 Hudi 写入 S3 时,生成的 Parquet 文件中会包含一个 .parquet.marker 文件。该文件是一个空文件,用于标识该 Parquet 文件是追加写入的文件。如果您使用 Hudi 进行追加写入时,会在每个 Parquet 文件中生成一个 .parquet.marker.APPEND 文件,用于标识该文件是追加写入的文件。
    需要注意的是,如果您使用 Hudi 进行追加写入,会在每个 Parquet 文件中生成一个 .parquet.marker.APPEND 文件。如果您在读取数据时需要过滤掉这些文件,可以在读取数据时指定过滤条件,例如:
    sql_more
    Copy
    // 创建 Flink StreamTableEnvironment
    StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);

    // 读取 Hudi 数据
    tEnv.executeSql("CREATE TABLE hudi_table (id INT, name STRING, ts BIGINT, partition STRING) " +
    "PARTITIONED BY (partition) " +
    "WITH ('connector' = 'hudi', " +
    " 'path' = 's3://bucket/path/to/table', " +
    " 'read.streaming.enabled' = 'true', " +
    " 'read.streaming.check-interval' = '5s', " +
    " 'read.streaming.start-commit' = 'latest', " +
    " 'read.streaming.query-interval' = '1s')");

    // 过滤掉 .parquet.marker.APPEND 文件
    Table result = tEnv.sqlQuery("SELECT * FROM hudi_table WHERE _hoodie_commit_time IS NOT NULL");
    在上述代码中,我们在查询数据时过滤掉了 _hoodie_commit_time 为空的记录,从而排除了 .parquet.marker.APPEND 文件的

    2023-07-29 18:27:39
    赞同 展开评论 打赏
  • Hudi 是一种用于处理大规模数据更新的开源数据湖解决方案,可以将数据写入到 S3 等分布式存储系统中。根据您的问题,如果在 Flink 中使用 Hudi 将数据写入 S3 并设置了压缩,生成的文件可能是带有 .parquet.marker.APPEND 后缀的文件。

    .parquet.marker.APPEND 文件是 Hudi 内部使用的标志文件,它记录了追加操作的元数据。当 Hudi 进行追加操作时,会先生成这样的标志文件,并在之后的批量操作中将数据追加到相应的 Parquet 文件中。

    通常情况下,针对每个逻辑表,Hudi 会创建一个或多个 Parquet 文件,这些文件保存了实际的数据内容。这些 Parquet 文件没有 .parquet.marker.APPEND 的后缀,而是以 .parquet 结尾。

    因此,如果您在 S3 上看到了 .parquet.marker.APPEND 文件,那么这只是 Hudi 内部用于管理数据更新的标志文件,并不是最终的 Parquet 数据文件。实际的数据文件应该是以 .parquet 结尾的文件。

    需要注意的是,为了能够正确读取和使用 Hudi 写入的数据,您需要使用 Hudi 提供的 API 或工具来读取和处理数据,而不仅仅是直接读取 Parquet 文件。这样可以保证正确地处理数据的增量更新和时间旅行等功能。

    2023-07-29 17:38:18
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载