Pyspark,EOFError-内存问题或数据损坏?

Pyspark,EOFError-内存问题或数据损坏?,pyspark,eoferror,Pyspark,Eoferror,我有一个dataframe,它有大约200万行url,两列:id和url。我需要从url解析域。我将lambda与urlparse或simplesplit一起使用。但我一直在用这两种方法。如果我创建一个40万的随机“样本”,它是有效的 同样有趣的是,pyspark向我展示了新列域的前20行,但是我不能对它做任何事情,否则我会再次出错 是内存问题还是数据有问题?有人能给我一个建议或提示吗 我搜索了几个关于这个的问题,没有一个对我有帮助 守则: parse_domain = udf(lambda x

我有一个dataframe,它有大约200万行url,两列:id和url。我需要从url解析域。我将lambda与urlparse或simplesplit一起使用。但我一直在用这两种方法。如果我创建一个40万的随机“样本”,它是有效的

同样有趣的是,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

csv中可能有一些损坏的行。当错误出现时,
df.show()
工作正常吗?@MikhailBerlinkov我在df.show()上得到了错误,但是show像往常一样给出了前20行。查找损坏行的最佳方法是什么?我在考虑把它转给熊猫,你有没有办法用pyspark来做?或者其他更好的方式…?我认为熊猫可以处理这么多的数据。另一种选择是在Spark中将文件作为文本文件加载,然后检查损坏的行。