Я пытаюсь оптимизировать запрос на соединение между двумя искровыми фреймами данных, назовем их df1, df2 (объединение по общему столбцу «SaleId»).
df1 очень маленький (5М), поэтому я транслирую его среди узлов искрового кластера.
df2 очень большой (200 миллионов строк), поэтому я попытался разбить его на сегменты по "SaleId".
В Spark, в чем разница между разбиением данных по столбцам и группированием данных по столбцам?
например:
раздел:
df2 = df2.repartition(10, "SaleId")
Ковш:
df2.write.format('parquet').bucketBy(10, 'SaleId').mode("overwrite").saveAsTable('bucketed_table'))
После каждого из этих приемов я только что присоединился к df2 с df1.
Я не могу понять, какой из этих методов является правильным.
Спасибо