我有一个数据框,它有大约 200 万行 URL,2 列:id 和 url。我需要从 url 解析域。我将 lambda 与 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()
示例网址:
"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