优化 spark sql 笛卡尔连接

Posted

技术标签:

【中文标题】优化 spark sql 笛卡尔连接【英文标题】:Optimizing spark sql Cartesian join 【发布时间】:2019-12-30 08:53:43 【问题描述】:

我必须对两个分别为 3M 和 1M 的数据集执行笛卡尔连接。这意味着 3M 数据集中的每一行都应该连接到 1M 数据集中的每一行。之后,我必须在笛卡尔积上执行多个其他联接。使用 PySpark 运行代码大约需要 9 天。有什么办法可以优化吗?

【问题讨论】:

嗨!你能发布你用来执行笛卡尔连接的coe吗?这样我们就可以看到可以优化的地方。 不确定笛卡尔积可以,需要优化。 forums.databricks.com/questions/6747/… @Titulum 我在笛卡尔连接之前编写的代码非常大,最终创建了 2 个表,这些表依次被连接。所以最终查询变成:“select a.v1,a.v1 from tableA a cross join tableB b” 【参考方案1】:

我之前遇到过同样的情况,但无法加入优化。所以我根据下面链接中提到的第三个选项更改了我的 spark 执行器配置 https://spoddutur.github.io/spark-notes/distribution_of_executors_cores_and_memory_for_spark_application.html 请检查一下

【讨论】:

我已经尝试优化配置,但仍然没有执行。

以上是关于优化 spark sql 笛卡尔连接的主要内容,如果未能解决你的问题,请参考以下文章

使用笛卡尔连接优化 sql 查询

为啥 Spark 认为这是一个交叉/笛卡尔连接

笛卡尔连接 (PY)Spark 最佳实践

spark join 引发“检测到 INNER 连接的笛卡尔积”

[转]sql语句中出现笛卡尔乘积 SQL查询入门篇

SQL中的笛卡儿积问题和多表连接操作