delta lake中的优化合并(databricks开源)

rm5edbpk  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(514)

我正在尝试使用delta-lake操作系统实现合并,我的历史数据约为70亿条记录,delta约为500万条记录。
合并基于复合键(5列)。
我正在构建一个10节点的集群r5d.12xlarge(~3tb内存/~480核)。
这项工作第一次花了35分钟,随后的运行需要更多的时间。
尝试使用优化技术,但没有任何效果,我开始得到堆内存问题运行3次后,我看到大量溢出磁盘上的数据洗牌,尝试重新写入历史使用顺序按合并键,得到性能改善和合并完成了20分钟,溢出约2tb,但是问题是,作为合并过程的一部分写入的数据的顺序不同,因为我无法控制写入数据的顺序,因此后续运行需要更长的时间。
我无法在delta lake oss中使用zorder,因为它只附带订阅。我尝试了压缩,但也没有帮助。请告诉我是否有更好的方法来优化合并过程。

nx7onnlm

nx7onnlm1#

这里有一个建议,似乎你正在运行你的databricks笔记本上的aws。
优化它的方法是同时使用配置单元元存储或任何目录服务。这有什么帮助?
同时保存您可以使用的数据 bucketing 要根据合并键对数据进行排序,此元数据信息需要存储在需要配置单元的元存储中。
如果使用bucketing,数据将井然有序,不会导致数据的过度无序,这将不可避免地提高工作性能。
我不太清楚databricks,但是如果你使用emr,你可以选择使用glue catalog作为metastore,或者你也可以在emr中拥有自己的metastore。

相关问题