Я использовал pyspark для обработки нескольких файлов журнала, в которых запись разбита на многострочный формат, поэтому я выбрал wholeTextFiles, чтобы прочитать данные, а затем отфильтровать то, что я хочу. Размер каждого файла ~ 800M, и в общей сложности 4096 файлов. Тем не менее, искро задание зависло после обработки некоторых задач, вот моя конфигурация и код:
конфигурация:
- num-executors 100 --executor-cores 1 --executor-memory 30G
код ядра:
file_rdd= sc.wholeTextFiles(inputDir, 2500)
print file_rdd.getNumPartitions()
out_rdd = file_rdd.flatMap(parseFileContent)\
.repartition(1000)\
.saveAsTextFile(title_outputDir)
После 300+ заданий произошел сбой; запущенный журнал показал следующее:
Iтакже получите визуализацию DAG здесь:
похоже, что операция перераспределения вызывает сбой, и этап 1 никогда не запускается. Кстати, вот больше информации о задачах, выполняемых, если это помогает:
Я нахожу некоторые связанные вопросы, поэтому здесь , здесь и здесь , но они только объясняютвысокоуровневое потребление памяти, а не то, как выполняются задачи (относительно каждой строки в файле) и сколько памяти требуется для каждой строки (когда она обрабатывается и после нее обрабатывается). Надеюсь, что кто-то может помочь мне в этом сложном понятии, и любые предложения будут полезны для обработки файла многострочного формата в pyspark (не Scala, я знаю, что Scala может использовать DataFrame для решения этой проблемы, но я не знаком со Scala)Спасибо всем!