Я читаю 8 миллиардов строк из GCS, обрабатываю каждую строку, а затем вывожу. Мой шаг обработки может занять немного времени и избежать истечения срока аренды рабочих и получения ошибки ниже; Я делаю GroupByKey
для 8 миллиардов и группирую по идентификатору, чтобы предотвратить слияние а>.
Рабочий элемент был безуспешно выполнен 4 раза. Каждый раз рабочий со временем терял связь со службой. Рабочий элемент был предпринят на:
Проблема в том, что шаг GroupByKey занимает целую вечность для завершения 8 миллиардов строк даже на 1000 узлах high-mem-2.
Я изучил возможную причину медленной обработки; большой размер каждого значения, сгенерированного для каждого ключа с помощью GroupByKey. Я не думаю, что это возможно, потому что из 8 миллиардов входных данных один входной идентификатор не может быть в этом наборе более 30 раз. Так что явно проблема не в горячих клавишах, а в чем-то другом.
Любые идеи о том, как оптимизировать это, приветствуются. Спасибо.