Как исправить проблемы с функцией DataFrame в PySpark - Py4JJavaError - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь создать и проанализировать фрейм данных в PySpark и в Notebook.

Ниже приведены мои коды в блокноте Jupyter.

from pyspark.sql import SparkSession

spark = SparkSession.builder \
   .master("local") \
   .appName("Neural Network Model") \
   .config("spark.executor.memory", "6gb") \
   .getOrCreate()

Мне удалось запустить Spark Session.

df1 = spark.createDataFrame([('John', 56, 80)])
print(df1.dtypes)
print(df1)
print(df1.show())

Мне удалось создать df1, dataframe, но каким-то образом я получил сообщение об ошибке при попытке использовать функцию фрейма данных в df1.show ()

Py4JJavaErrorTraceback (последний вызов был последним) в 2 print (df1.dtypes) 3 print (df1) ----> 4 print (df1.show ())

Py4JJavaError: Произошла ошибка при вызове o501.showString,: org.apache.spark.SparkException: задание прервано из-за сбоя этапа: задание 0 на этапе 9.0 не выполнено 1 раз, последний сбой: потерянное задание 0.0 на этапе 9.0 (TID 22, localhost, драйвер исполнителя): org.apache.spark.SparkException: рабочий Python не смог подключиться обратно.по адресу org.apache.spark.api.python.PythonWorkerFactory.createSimpleWorker (PythonWorkerFactory.scala: 170) по адресу org.apache.spark.api.python.PythonWorkerFactory.create (PythonWorkerFactory.scala: 97.park.scap.pg.gpg или 97).createPythonWorker (SparkEnv.scala: 117) в org.apache.spark.api.python.BasePythonRunner.compute (PythonRunner.scala: 108) в org.apache.spark.api.python.PythonRDD.compute (PythonRDD.scala 65:) в org.apache.spark.rdd.RDD.computeOrReadCheckpoint (RDD.scala: 324)

Не могли бы вы помочь мне решить эту проблему?Я не уверен, что это проблема системы или мои коды.

Спасибо !!!

1 Ответ

0 голосов
/ 25 января 2019

df1.show() просто показать содержимое кадра данных. Это функция, которая возвращает Unit (она не возвращает значение). Таким образом, print(df1.show()) потерпит неудачу (в блокноте Databricks ноутбук возвращает None)

Если вы хотите увидеть содержимое df1, просто нужно сделать

df1.show()

без печати ()

Это на самом деле реализация show ():

def show(): Unit = show(20)

def show(numRows: Int): Unit = show(numRows, truncate = true)

def show(numRows: Int, truncate: Boolean): Unit = if (truncate) {
   println(showString(numRows, truncate = 20))
 } else {
   println(showString(numRows, truncate = 0))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...