如何解决PySpark中的DataFrame函数问题-Py4JJavaError

时间:2019-01-25 07:45:47

标签: dataframe pyspark jupyter-notebook

我正在尝试在PySpark和Notebook中创建和分析数据框。

下面是我在Jupyter Notebook中的代码。

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,数据帧,但是以某种方式,当我尝试在df1.show()中使用数据帧功能时收到错误消息

  

Py4JJavaError Traceback(最近的呼叫   最后)         2打印(df1.dtypes)         3打印(df1)   ----> 4个print(df1.show())

     

Py4JJavaError:调用o501.showString时发生错误。 :   org.apache.spark.SparkException:由于阶段失败,作业中止了:   阶段9.0中的任务0失败1次,最近一次失败:丢失任务0.0   在阶段9.0(TID 22,本地主机,执行程序驱动程序)中:   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)     在org.apache.spark.SparkEnv.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 :(得分:1)

df1.show()仅显示数据框的内容。这是一个返回Unit(不返回值)的函数。因此print(df1.show())会失败(在Databricks笔记本中返回None)

如果要查看df1的内容,只需要做

df1.show()

没有print()

这实际上是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))
}