【问题标题】:Method showString([class java.lang.Integer, class java.lang.Integer, class java.lang.Boolean]) does not exist in PySparkPySpark 中不存在方法 showString([class java.lang.Integer, class java.lang.Integer, class java.lang.Boolean])
【发布时间】:2019-04-26 14:03:22
【问题描述】:

这是sn-p:

from pyspark import SparkContext
from pyspark.sql.session import SparkSession

sc = SparkContext()
spark = SparkSession(sc)
d = spark.read.format("csv").option("header", True).option("inferSchema", True).load('file.csv')
d.show()

运行后报错:

An error occurred while calling o163.showString. Trace:
py4j.Py4JException: Method showString([class java.lang.Integer, class java.lang.Integer, class java.lang.Boolean]) does not exist

所有其他方法都运行良好。尝试了很多研究,但徒劳无功。任何线索将不胜感激

【问题讨论】:

    标签: java apache-spark pyspark apache-spark-sql py4j


    【解决方案1】:

    这是 Spark 版本不匹配的指标。 Before Spark 2.3 show 方法只接受了两个参数:

    def show(self, n=20, truncate=True):
    

    since 2.3 需要三个参数:

    def show(self, n=20, truncate=True, vertical=False):
    

    在您的情况下,Python 客户端似乎调用了后者,而 JVM 后端使用的是旧版本。

    由于 SparkContext 初始化在 2.4 中发生了重大变化,这将导致 SparkContext.__init__ 失败,您可能正在使用:

    • 2.3.x Python 库。
    • 2.2.x JAR。

    您可以通过直接从会话中检查 Python 版本来确认这一点:

    sc.version
    

    对比虚拟机:

    sc._jsc.version()
    

    此类问题通常是由于配置错误的PYTHONPATH(直接或使用pip 在现有的Spark 二进制文件上安装PySpark)或SPARK_HOME 造成的。

    【讨论】:

    • 我重新检查了配置设置,一切正常。 SparkContext 版本是 2.1.1,spark 版本是 2.3.0。方法 showString() 不能接受 3 个参数。我还能做什么?这个问题似乎是不兼容的。
    • 检查 PYTHONPATHSPARK_HOME 环境变量 - 这些是否指向相同的安装?您是否将 PySpark 与 Spark 二进制文件分开安装?
    • 我正在使用 Anaconda jupyter notebook for python,它的路径是:C:\Users\user_name\Anaconda3 并且 SPARK_HOME 设置为:C:\Spark\spark-2.3.0-bin-hadoop2。 7
    • conda list pyspark 返回什么?
    • 它返回:C:\Users\user_name\Anaconda3。所以你是说我的 SPARK_HOME 也设置为相同吗?
    【解决方案2】:

    在 spark-shell 控制台上,输入变量名并查看数据类型。 作为替代方案,您可以在变量命名后使用两次制表符。它将显示可以应用的必要功能。 DataFrame 对象的示例。

    res23: org.apache.spark.sql.DataFrame = [order_id: string, book_name: string ... 1 more field]
    

    【讨论】:

    • 谢谢。它向我展示了可以应用的“显示”功能。但问题在于传递的参数
    猜你喜欢
    • 2019-05-25
    • 2021-02-02
    • 2018-06-07
    • 2023-03-07
    • 1970-01-01
    • 2021-11-04
    • 2023-02-01
    • 2019-12-20
    • 2014-10-30
    相关资源
    最近更新 更多