Добавить столбец из одного кадра данных в другой, БЕЗ СОЕДИНЕНИЯ - PullRequest
0 голосов
/ 12 апреля 2019

Ссылаясь на здесь , который рекомендует присоединиться к добавлению столбца из одной таблицы в другую. Я действительно использовал этот метод, но теперь достигла некоторого ограничения для огромного списка таблиц и строк

Допустим, у меня есть массив данных с функциями M id, salary, age, etc.

+----+--------+------------+--------------+
| id | salary | age | zone |  ....  
+----+--------+------------+--------------+

Я выполнил определенные операции для каждой функции, чтобы получить что-то вроде этого

+----+--------+------------+--------------+------------+--------------+--------------+--------------+
| id | salary | bin_salary | start_salary | end_salary | count_salary | stat1_salary | stat2_slaary | 
+----+--------+------------+--------------+------------+--------------+--------------+--------------+

Каждая функция обрабатывается независимо, с тем же списком строк

+----+--------+------------+--------------+------------+
| id | salary | stat1_salary | stat2_salary | stat3_salary|
+----+--------+------------+--------------+------------+
| 301  | x1     | x          | x            | x |
| 302  | null   | x          | x            | x |
| 303  | x3     | x          | x            | x |

+----+--------+------------+--------------+
| id | age | stat1_age | stat2_age 
+----+--------+------------+--------------+
| 301  | null   | x          | x   
| 302  | x2     | x          | x   
| 303  | x3     | x          | x   

В конце я хотел бы объединить их в окончательный фрейм данных со всеми атрибутами каждой функции, объединив уникальный идентификатор из сотен тысяч таблиц, каждая для одной функции. Этот окончательный фрейм данных - мой векторный элемент

| id | salary | stat1_salary | stat2_salary | stat3_salary| age | stat1_age | stat2_age

Я достиг некоторого ограничения памяти, которое вызывает исключение Out Of Memory. Увеличение памяти исполнителя и драйвера представляется временным решением и ограничено администратором.

JOIN стоит дорого и ограничен ресурсами в pyspark, и мне интересно, можно ли предварительно отсортировать каждой таблицы функций независимо, тогда сохранить этот порядок и просто APPEND весь столбец рядом друг с другом вместо выполнения дорогого JOIN. Я могу сохранить один и тот же список строк для каждой таблицы объектов. Я надеюсь, что у меня не будет ни соединения, ни поиска, потому что мой набор идентификаторов такой же.

Как это достижимо? Насколько я понимаю, даже если я сортирую каждую таблицу по Id, Spark распределяет их для хранения, и поиск (если я хочу запросить обратно для добавления) не гарантирует, что этот порядок будет одинаковым.

...