[英]Spark join/groupby datasets take a lot time
我有2行35kk +行的數據集(表)。
我嘗試通過一些ID 加入 (或分組 )該數據集。 (通常是一對一的)
但是此操作需要很多時間: 25+ h 。
過濾器只能正常工作: 〜20分鍾 。
環境 :emr-5.3.1
Hadoop發行版 :Amazon
應用程序 :Ganglia 3.7.2,Spark 2.1.0,Zeppelin 0.6.2
實例類型: m3.xlarge
代碼( groupBy ):
Dataset<Row> dataset = ...
...
.groupBy("id")
.agg(functions.min("date"))
.withColumnRenamed("min(date)", "minDate")
代碼( join ):
...
.join(dataset2, dataset.col("id").equalTo(dataset2.col("id")))
我也在EMR日志中找到此消息:
HashAggregateExec: spark.sql.codegen.aggregate.map.twolevel.enable is set to true, but current version of codegened fast hashmap does not support this aggregate.
數據可能會歪斜。 我們面對這個。 檢查您的加入專欄。 大多數情況是在您的聯接列為NULL時發生的
使用以下命令檢查數據存儲模式:
select joining_column, count(joining_col) from <tablename>
group by joining_col
這將使您了解聯接列中的數據是否均勻分布
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.