在PySpark 2上加入DataFrame时出错

问题描述 投票:0回答:1

我在使用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但不确定。

apache-spark pyspark pyspark-sql
1个回答
0
投票

我通过降级到Java 1.8来解决问题....我的Java版本是1.10

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.