我有一个非常大的HIVE查询,它将被迁移到spark。
是否可以通过对查询进行分割来节省性能?
合并:
Dataset<Row> sqlDF = spark.sql("select c.name from order o join customer c on o.orderID=c.orderID where o.productPrice > 100");与之相比:
Dataset<Row> order = spark.sql("select o.orderID from order where where o.productPrice > 100");
Dataset<Row> customer= spark.sql("select c.orderID, c.name from customer);
Dataset<Row> joinedTable = order.join(customer, customer("orderID"));使用Dataframes会降低可读性,但我不知道sure如何优化请求。
发布于 2018-12-24 21:43:44
考虑到一个未完成的查询也缺乏性能,那么答案是肯定的。
我见过Spark有一个70个表联接,但是内存错误导致了失败。通过缓存将其分解为更小的集合,从而使其能够随后执行。
催化剂越来越好,但落后于imho,为传统的RDBMS提供了最好的品种优化器。它或其后继者将迎头赶上。
同样的问题也适用于Oracle。
我认为您的示例不会显示出任何优点,但更复杂的查询有时需要拆分,但这是逐个案例进行的。
https://stackoverflow.com/questions/53914729
复制相似问题