Мы получили два набора данных, которые были сохранены следующим образом:
Набор данных 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()
В чем может быть причина случайного перемешивания, когда мы включаем ключ разделения, и как мы можем его смягчить?