Pyspark, EOFError - Проблема с памятью или поврежденные данные? - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть фрейм данных, который содержит около 2 миллионов строк с URL, 2 столбца: id и url.Мне нужно разобрать домен с URL.Я использовал лямбду с urlparse или простой сплит.Но я продолжаю получать EOFError обоими способами.Если я создаю случайный «образец» из 400 000, он работает.

Что также интересно, pyspark показывает мне 20 верхних строк с новым доменом столбцов, но я ничего не могу с ним сделать, или яполучите ошибку снова.

Это проблема с памятью или что-то не так с данными?Может кто-нибудь посоветовать мне или дать подсказку?

Я искал несколько вопросов по этому поводу, ни один из них не помог мне.

Код:

parse_domain = udf(lambda x: x.split("//")[-1].split("/")[0].split('?')[0], 
returnType=StringType())
df = df.withColumn("domain", parse_domain(col("url")))
df.show()

Пример URL:

"https://www.dataquest.io/blog/loading-data-into-postgres/"
"https://github.com/geekmoss/WrappyDatabase"
"https://www.google.cz/search?q=pyspark&rlz=1C1GCEA_enCZ786CZ786&oq=pyspark&aqs=chrome..69i64j69i60l3j35i39l2.3847j0j7&sourceid=chrome&ie=UTF-8"
"https://search.seznam.cz/?q=google"

И ошибка, которую я продолжаю получать:

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