问下 Flink中hudi 写入s3的时候设置压缩了,生成parquet.marker.APPEND log也有 没有生成单独的.parquet文件呢?
用 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 文件的
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 文件。这样可以保证正确地处理数据的增量更新和时间旅行等功能。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。