【发布时间】:2021-06-29 19:01:24
【问题描述】:
基本上,我有一个火花流作业(带增量),每 5min 将一个小文件写入 hdfs。我还有一个每天运行的压缩作业,将前一天的数据压缩到一些大文件中(文件数量取决于作业重新分区号)。大文件与原始小文件位于同一目录中。有没有什么办法可以有效的去除原来的小文件,因为它们没用?
我已经为增量表尝试了vacuum 函数,但这基本上会删除保留期之外的所有数据,无论是否压缩。
以下是我压缩数据的方式(我使用的是 Java):
spark.read()
.format("delta")
.load(path) // hdfs path of the data
.where(whereCondition) // my data is partitioned by date, so here should be "date = '2021-06-29'"
.repartition(repartitionNum)
.write()
.option("dataChange", "false")
.format("delta")
.mode("overwrite")
.option("replaceWhere", whereCondition)
.save(path);
如果有人能告诉我,那就太好了
- 如果我在压缩方面做得正确
- 如何删除不应被 delta 引用的原始小文件。
欢迎评论,谢谢!
【问题讨论】:
标签: apache-spark spark-streaming databricks delta-lake