分解SQL查询以提高Spark效率

时间:2018-12-24 14:35:02

标签: apache-spark apache-spark-sql

我有一个非常大的HIVE SQL查询,该查询将被迁移到Spark。
通过划分查询是否可以节省性能?

组合:

defaultTargetSdkVersion

相比:

Dataset<Row> sqlDF = spark.sql("select c.name from order o join customer c on o.orderID=c.orderID where o.productPrice > 100");

使用数据框会降低可读性,但是我不确定spark如何优化请求。

1 个答案:

答案 0 :(得分:1)

鉴于非完成查询也表现出性能不足,那么答案是肯定的。

我已经看到带有70个表联接的Spark SQL因内存错误而失败。通过缓存将其分解为更小的集合,使其随后可以全部执行。

Catalyst越来越好,但在传统RDBMS的最佳品种优化器方面落后于imho。它或其后继者将会赶上。

相同的问题也适用于Oracle。

我认为您的示例不会显示任何优势,但是有时需要拆分更复杂的查询,但这是根据具体情况进行的。