При преобразовании из RDD в DataFrame я получаю EOFError. Что вызывает это и как мне это остановить? - PullRequest
0 голосов
/ 04 октября 2019

При попытке преобразовать RDD в DataFrame я получаю сообщение об ошибке "EOFError". Что я могу сделать, чтобы остановить это?

Я пытался создать DataFrame другим способом, но у него были свои сложности. Я думаю, что способ, которым я сейчас пытаюсь создать DataFrame, является самым простым методом.

data = data.zip(bool_converted).map(lambda x: (x[0][1], x[0][2], x[0][3], x[1][1], x[0][5], x[0][6], x[0][7], x[0][8], x[0][9], x[0][10], x[0][11]))

data = data.toDF()

Фактическое сообщение об ошибке:

Traceback (most recent call last):
  File "/opt/spark/python/lib/pyspark.zip/pyspark/daemon.py", line 170, in manager
  File "/opt/spark/python/lib/pyspark.zip/pyspark/daemon.py", line 73, in worker
  File "/opt/spark/python/lib/pyspark.zip/pyspark/worker.py", line 402, in main
    if read_int(infile) == SpecialLengths.END_OF_STREAM:
  File "/opt/spark/python/lib/pyspark.zip/pyspark/serializers.py", line 717, in read_int
    raise EOFError
EOFError

1 Ответ

0 голосов
/ 04 октября 2019

Чтобы это работало, вы должны хранить x[0][i] s в словаре.

from pyspark.sql.types import Row

#put your data into a dictionary (can write your own function to do this)
dc = {1:x[0][1],2:x[0][2],3:x[0][3],...}

#then this
df = data.map(lambda x: Row(**dc)).toDF()
...