У меня есть 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 () для схожих ключей (которые также объединяли списки аналогичным образом) и раньше не сталкивался с этой проблемой, возможно, проблема заключается в меньшем количестве ключей, приводящих к большим спискам?
К сожалению, я могу не воспроизводит рабочий пример, но я надеюсь, что кто-то еще сталкивался с подобной проблемой.
Был бы очень признателен за любой совет.