Tru*_*i J 3 java py4j apache-spark apache-spark-sql 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()
Run Code Online (Sandbox Code Playgroud)
之后遇到错误:
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
Run Code Online (Sandbox Code Playgroud)
所有其他方法都可以正常工作。试图进行大量研究但徒劳无功。任何线索将不胜感激
这表明Spark版本不匹配。在Spark 2.3 show方法之前,只有两个参数:
def show(self, n=20, truncate=True):
Run Code Online (Sandbox Code Playgroud)
从2.3开始,它需要三个参数:
def show(self, n=20, truncate=True, vertical=False):
Run Code Online (Sandbox Code Playgroud)
在您的情况下,Python客户端似乎调用了后者,而JVM后端使用了较旧的版本。
由于SparkContext初始化在2.4中进行了重大更改,这将导致上的失败SparkContext.__init__,因此您可能使用:
您可以通过直接从会话中检查版本来确认这一点:Python:
sc.version
Run Code Online (Sandbox Code Playgroud)
与JVM:
sc._jsc.version()
Run Code Online (Sandbox Code Playgroud)
诸如此类的问题通常是由于配置错误PYTHONPATH(直接或通过在现有的最高Spark二进制文件上pip安装安装PySpark)或导致的SPARK_HOME。
| 归档时间: |
|
| 查看次数: |
1712 次 |
| 最近记录: |