Как транслировать огромный рдд в писпарк? - PullRequest
0 голосов
/ 25 февраля 2019

Когда я печатаю первый элемент моего rdd следующим образом:

print("input = {}".format(input.take(1)[0]))

Я получаю результат как: (u'motor', [0.001,..., 0.9])

Тип [0.001,..., 0.9] - это список.

Количество элементов на входе rdd равно 53304100

Моя проблема возникает, когда я хочу транслировать входной СДР следующим образом:

brod = sc.broadcast(input.collect())

СгенерированныйИсключением является следующее (я показываю только первый фрагмент исключения):

    WARN TaskSetManager: Lost task 56.0 in stage 1.0 (TID 176, 172.16.140.144, executor 0): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
  File "/cvmfs/soft.computecanada.ca/easybuild/software/2017/Core/spark/2.3.0/python/lib/pyspark.zip/pyspark/worker.py", line 229, in main
    process()
  File "/cvmfs/soft.computecanada.ca/easybuild/software/2017/Core/spark/2.3.0/python/lib/pyspark.zip/pyspark/worker.py", line 224, in process
    serializer.dump_stream(func(split_index, iterator), outfile)
  File "/cvmfs/soft.computecanada.ca/easybuild/software/2017/Core/spark/2.3.0/python/lib/pyspark.zip/pyspark/serializers.py", line 372, in dump_stream
    vs = list(itertools.islice(iterator, batch))
TypeError: <lambda>() missing 1 required positional argument: 'document'

1 Ответ

0 голосов
/ 25 февраля 2019

Если ваш СДР слишком велик, приложение может столкнуться с ошибкой OutOfMemory, в результате которой методом сбора данных будут извлечены все данные из памяти драйвера, которые обычно недостаточно велики.

Таким образом, вы можете попробоватьувеличить объем памяти вашего драйвера на

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