这是片段:
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。
您可以通过直接从会话中检查版本来确认:
sc.version
与JVM:
sc._jsc.version()
像这样的问题通常是由于配置错误PYTHONPATH(直接或通过使用pip安装PySpark在现有的顶级Spark二进制文件上)或SPARK_HOME。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。