我们得到了两个持久化的数据集,如下所示:
数据集A:
datasetA.repartition(5, datasetA.col("region"))
.write().mode(saveMode)
.format("parquet")
.partitionBy("region")
.bucketBy(5,"studentId")
.sortBy("studentId")
.option("path", parquetFilesDirectory)
.saveAsTable( database.tableA));
数据集B:
datasetB.repartition(5, datasetB.col("region"))
.write().mode(saveMode)
.format("parquet")
.partitionBy("region")
.bucketBy(5,"studentId")
.sortBy("studentId")
.option("path", parquetFilesDirectory)
.saveAsTable( database.tableB));
加入区域和studentId会导致数据混排。下面是联接查询:
spark.sql("Select count(*) from database.tableA a, database.tableB b where a.studentId = b.studentId and a.region = b.region").show()
当我们包含分区键时,可能会造成洗牌的原因是什么 以及如何减轻它?
答案 0 :(得分:0)
是的,您可以使用预排序和分组表来减轻混洗