在PySpark 2上加入DataFrame时出错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在PySpark 2上加入DataFrame时出错相关的知识,希望对你有一定的参考价值。
我在使用Spark 2.3.1和PySpark时遇到了麻烦。
Firstable我试图做很多不同的操作,比如连接和列选择,最后收集它或将它保存到csv文件中,但火花给我一个Py4JJavaError。
我的第一个错误是:
Py4JJavaError: An error occurred while calling o482.showString.
: org.apache.spark.SparkException: Exception thrown in awaitResult:
at org.apache.spark.util.ThreadUtils$.awaitResult(ThreadUtils.scala:205)
编辑完整错误堆栈http://textuploader.com/d21se
我试图根据https://community.hortonworks.com/content/supportkb/150263/orgapachesparksparkexception-exception-thrown-in-a.html增加broadcastTimeout,但它仍然无法正常工作。
所以我尝试了一个像关节这样的小手术。我有两个DataFrame,每个大约50MB。我试过像这样的联接:
l.join(r, l["ir"] == r["ir"], how="outer").show()
当l和r是我的DataFrame而ir是关键。
我仍然得到一个错误
Py4JJavaError: An error occurred while calling o3584.showString.
: java.lang.IllegalArgumentException
我不确定该做什么以及问题来自哪里。如果有人可以帮忙!
编辑:经过更多调查后,当我进行连接时,似乎总是列数是一个问题。我试着这样做:
l = l.selectExpr(*list(np.unique(l.columns[:-7] + ["ir"])))
l.join(r, l["ir"] == r["ir"], how="outer").show()`
和
l = l.selectExpr(*list(np.unique(l.columns[-7:] + ["ir"])))
l.join(r, l["ir"] == r["ir"], how="outer").show()
对于python不熟悉的人来说,两者都工作了,我只选择了从第0列到第7行的第一个表达式中的子样本(-7在结束之前是7)+键,在第二个表达式中从第7列到第7列结束
两种工作都意味着每个列都可以进入连接,并且它不是带有数据的pb,而是具有列数。我认为这可能是火花配置pb但不确定。
我通过降级到Java 1.8来解决问题....我的Java版本是1.10
以上是关于在PySpark 2上加入DataFrame时出错的主要内容,如果未能解决你的问题,请参考以下文章
Pyspark Dataframe:无法保存为 Hive 表
在 Pyspark 中从 Rest Api 创建数据框时出错