我有一个非常大的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如何优化请求。
答案 0 :(得分:1)
鉴于非完成查询也表现出性能不足,那么答案是肯定的。
我已经看到带有70个表联接的Spark SQL因内存错误而失败。通过缓存将其分解为更小的集合,使其随后可以全部执行。
Catalyst越来越好,但在传统RDBMS的最佳品种优化器方面落后于imho。它或其后继者将会赶上。
相同的问题也适用于Oracle。
我认为您的示例不会显示任何优势,但是有时需要拆分更复杂的查询,但这是根据具体情况进行的。