首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache和Hudi:大量输出文件

Apache和Hudi:大量输出文件
EN

Stack Overflow用户
提问于 2021-04-14 15:03:13
回答 2查看 841关注 0票数 2

我试图从许多不同的.csv文件中读取数据(所有文件都具有相同的“结构”),使用Spark执行一些操作,最后以Hudi格式保存它们。

要将数据存储在同一个Hudi表中,我认为最好的方法是在执行写操作时使用append方法。

问题是这样做会产生大量的小文件,其总和的维度比输入数据集的大小要大得多(在某些情况下是10倍)。

这是我对Hudi的配置:

代码语言:javascript
复制
hudi_options = {
  'hoodie.table.name': tableName,
  'hoodie.datasource.write.recordkey.field': 'uuid',
  'hoodie.datasource.write.partitionpath.field': 'main_partition',
  'hoodie.datasource.write.table.name': tableName,
  'hoodie.datasource.write.operation': 'upsert',
  'hoodie.datasource.write.precombine.field': 'ts',
  'hoodie.upsert.shuffle.parallelism': 10, 
  'hoodie.insert.shuffle.parallelism': 10,
  'hoodie.delete.shuffle.parallelism': 10
}

在执行写op时,如下所示:

result_df.write.format("hudi").options(**hudi_options).mode("append").save(basePath)

其中,result_df是一个,具有相同的模式,但具有不同的数据,并且basePath是常量。

我检查了输出文件的内容,它们有正确的模式/数据。那么,是否有一种方法将数据附加到同一个Hudi表文件?

我对apache和Hudi相当陌生,所以任何帮助/建议都将不胜感激;-)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-18 13:35:40

Apache遵循MVCC (多验证并发控制)的原理,因此每次写入都会在以下情况下创建现有文件的新版本: 1.如果文件大小小于默认的最大文件大小: 100 MB 2。如果要更新现有文件中的现有记录。将这两个选项添加到您的hudi_options中,它在任何给定时间只保存最新的两个版本:"hoodie.cleaner.commits.retained":1,"hoodie.keep.min.commits":2

来自a comment by @felix-k-jose

票数 0
EN

Stack Overflow用户

发布于 2021-04-20 04:03:09

请提出一个github问题(httsp://github.com/apache/hudi/ timely ),以获得社区的及时响应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67094217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档