如何高效创建Delta表?

问题描述 投票:0回答:1

我有两个数据帧,称为 df1 和 df2。 df1 有 300 M 条记录,df2 有 400 M 条记录。进行简单的内部连接并写入 s3 存储桶。下面是我的示例代码片段

代码:

sql = """ select df1.*,df2.* from df1 inner join df2 on df1.year=df2.year and df1.month = df2.month and df1.day = df2.day and df1.id = df2.id

Pyspark 代码:

spark.sql(sql).write('delta').mode('overwrite').saveAsTable('schema.tablename)

如何高效创造Delta?在我的集群中,需要 3 个小时才能完成。我已启用 AQE 和随机分区 = 自动。

pyspark apache-spark-sql databricks
1个回答
0
投票

这是一个非常主观的问题,变量太多。一般指导:

  • 花更多的钱:使用更大的集群。
  • 确保您的分区大小对于您正在使用的集群/节点来说是最佳的(加入后)。经验法则是拥有 2GB 分区。越大,您将有本地磁盘交换,越小,您就会有开销。
  • 查看执行计划,看看是否有任何不需要的洗牌。
  • 确保您的原始数据帧实际上在连接中使用的列上进行分区。
© www.soinside.com 2019 - 2024. All rights reserved.