![](/img/trans.png)
[英]Java compareTo method Error :java.lang.Integer cannot be cast to 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__
失敗,因此您可能使用:
您可以通過直接從會話中檢查版本來確認這一點: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.