внутреннее соединение двух больших панд данных с использованием dask - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть две большие таблицы, одна из которых сравнительно небольшая - 8 миллионов строк и один столбец.Другой большой 173 миллиона строк и один столбец.Индекс первого фрейма данных - IntervalIndex (например, (0,13], (13, 20], (20, 23], ...), а второй - упорядоченные числа (1,2,3, ...)Оба DataFrame отсортированы по категориям

DF1

(0,13] 1

(13 20] 2

.... Df2 Value

1 5.2

2 3,4

3 7,8

Желаемый

Df3 ​​

значение индекса категории

1 5.2 1

2 3.4 1

3 7.8 1

Я хочу получить два внутренних соединения (более быстрый алгоритм), которое возвращает внутреннее соединение, подобное MySQL, на data_frame2.index

Я хотел бы иметь возможность выполнить это сложным образом в кластере, потому что, когда Я ПРОИЗВОДИЛ INNERJOIN С МЕНЬШЕ ВТОРОМ ДАННЫМ РЕЗУЛЬТАТОМ, НАСТОЯЩИЙ ПАМЯТЬ ПОТРЕБЛЯЕТ ИЗОБРАЖЕНИЕ 105MEGABYTE для 10 строк с использованием map_partitions. Другая проблема заключается в том, что я не могудважды использовать scatter, если сначала DaskDF = client.scatter (dataframe2), а затем DaskDF = client.submit (fun1, DaskDF). Я не могу сделать что-то вроде client.submit (fun2, DaskDF).

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете попробовать использовать меньшие разделы.Напомним, что использование объединений в памяти зависит от количества общих строк.В зависимости от ваших данных использование памяти выходного раздела может быть намного больше, чем использование памяти ваших входных разделов.

...