Метод showString ([класс java.lang.Integer, класс java.lang.Integer, класс java.lang.Boolean]) не существует в PySpark - PullRequest
0 голосов
/ 24 ноября 2018

Это фрагмент:

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

Все остальные методы работают хорошо.Пробовал много исследований, но тщетно.Любое руководство будет высоко ценится

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Это индикатор несоответствия версии 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 (либо напрямую, либо с помощью pip установленного PySpark в верхней части существующих двоичных файлов Spark) или SPARK_HOME,

0 голосов
/ 24 ноября 2018

В консоли spark-shell введите имя переменной и посмотрите тип данных.В качестве альтернативы, вы можете дважды нажать после имени переменной.и он покажет необходимую функцию, которую можно было бы применить.Пример объекта DataFrame.

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