Сериализованная задача превышает максимально допустимую, pyspark на кластере AWS - PullRequest
0 голосов
/ 03 октября 2018

Я пишу скрипт pyspark, работающий на кластере AWS, который имеет 4 узла (32 ГБ ОЗУ, 16 ядер).Этот сценарий читает набор файлов json (общий размер ~ 320 МБ), выравнивает их, создает схему, а затем сохраняет ее в таблицу Hive на s3:

...
print("Done with schema creation")
mySparkDF = sqlContext.createDataFrame(convertedDF, schema)
mySparkDF.registerTempTable(tmptable)
try:
    print("executing: drop table {}".format(exttable))
    sqlContext.sql("drop table "+exttable) 
except:
    print ("Table does not exist, so can't drop it")
loc='s3://bucket_name/hive/tables/'+exttable
comline="create table " + exttable +" stored as parquet location '" + loc + "' as select * from " + tmptable

try:
    print("Executing: {}".format(comline))
    sqlContext.sql(comline)

except:
    print("FAILED executing {}".format(comline))

В какой-то момент во время выполнения "sqlContext.sql (comline) "строка, мой скрипт завершается с ошибкой:

" ОШИБКА FileFormatWriter: прерывание задания пустое. org.apache.spark.SparkException: задание прервано из-за сбоя этапа: для задания 100 в сериализованном виде: 0 было 152205136байт, который превышает максимально допустимый: spark.rpc.message.maxSize (134217728 байт). Рассмотрите возможность увеличения spark.rpc.message.maxSize или использования широковещательных переменных для больших значений. "

Не знаюзнать, что делать, чтобы это исправить.Можно ли разделить выполнение части «создать таблицу ...» на более мелкие части?Или мне действительно нужно увеличить spark.rpc.message.maxSize?Боюсь, он снова упадет, если размер данных станет еще больше.Пожалуйста, сообщите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...