У меня есть два кадра данных, которые необходимо соединить в кластере из 20 узлов. Однако из-за их размера простое перекрестное соединение не удается Я хочу разделить данные и выполнить перекрестное соединение и ищу эффективный способ сделать это.
Простой алгоритм
Вручную разделите файл f1 на три и прочитайте данные: df1A, df1B, df1C
.
Вручную разбить файл f2 на четыре и подготовить его к кадрам данных: df2A, df2B, df2C, df2D
.
Перекрестное объединение df1A X df2A, df1A X df2B,..,df1A X df2D,...,df1C X df2D
.
Сохраните каждое перекрестное объединение в файл и вручную соберите все файлы.
Таким образом, Spark может выполнять каждое перекрестное соединение параллельно, и все должно завершиться довольно быстро.
Вопрос
Есть ли более эффективный способ сделать это, считав оба файла в два кадра данных, затем разделив каждый кадр данных на 3 и 4 "части" и для каждого раздела одного перекрестного соединения одного кадра данных с каждым разделом другого кадра данных?