Pyspark rdd reduByKey () / groupByKey () этап никогда не завершается, ошибки не выдаются, не заканчиваются памятки - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть rdd с записями 12kk и возрастами от 0 до 85, данные выглядят так:

[{'age': 2.18430371791803,
  'code': u'"315.320000"',
  'id': u'"00008RINR"'},
 {'age': 2.80033330216659,
  'code': u'"315.320000"',
  'id': u'"33338DNNR"'},
 {'age': 2.8222365762732,
  'code': u'"V20.20000"',
  'id': u'"00008RINR"'},
 {...}]

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

Когда я выполняю следующее для полного rdd:

rdd.map(lambda x: (int(round(x["age"])), [x["code"]]))\.
reduceByKey(lambda x, y: x + y)\

Ничего не происходит, команда никогда завершается или прогрессирует (даже при ожидании очень длительных периодов времени), застрял на этапе 7: (0 + 8) / 17, не выдается никаких ошибок / предупреждений, и имеется много свободной памяти.

I пытался увеличить память исполнителя и драйвера, а также количество разделов, но все равно ничего не происходит.

Код работает нормально и довольно быстро на s c .parallelize (rdd.take (1000000)).

Так как никаких ошибок не выдается, мне трудно понять, в чем проблема? Я использовал lowerByKey () для схожих ключей (которые также объединяли списки аналогичным образом) и раньше не сталкивался с этой проблемой, возможно, проблема заключается в меньшем количестве ключей, приводящих к большим спискам?

К сожалению, я могу не воспроизводит рабочий пример, но я надеюсь, что кто-то еще сталкивался с подобной проблемой.

Был бы очень признателен за любой совет.

...