在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 创建数据框时出错

如何在多列上旋转 PySpark 中的 DataFrame?

Apache Spark:启动 PySpark 时出错

运行pyspark时出错

如何在唯一键上加入 DataFrame 时避免洗牌?