簡體   English   中英

PySpark中不存在方法showString([class java.lang.Integer,class java.lang.Integer,class java.lang.Boolean])

[英]Method showString([class java.lang.Integer, class java.lang.Integer, class java.lang.Boolean]) does not exist in PySpark

這是代碼段:

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

所有其他方法都可以正常工作。 試圖進行大量研究但徒勞無功。 任何線索將不勝感激

這表明Spark版本不匹配。 在Spark 2.3之前, show方法僅接受兩個參數:

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

從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

與JVM:

sc._jsc.version()

這樣的問題通常是由於PYTHONPATH配置錯誤(直接導致的,或者是通過在現有的Spark二進制文件的頂部使用pip安裝的PySpark )或SPARK_HOME

在spark-shell控制台上,輸入變量名稱並查看數據類型。 另外,您也可以在變量名之后兩次制表。 它將顯示可以應用的必要功能。 DataFrame對象的示例。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM