JupyterNotebook运行Pyspark出现异常:′PipelinedRDD′ object has no attribute ′toDF′

问题描述

我在使用jupyter notebook连接pyspark进行pyspark操作,在使用’toDF‘函数将rdd转换为DataFrame出现‘PipelinedRDD' object has no attribute 'toDF'的异常。但是奇怪的一点是,我用pyspark启动spark shell直接进行操作时,’toDF‘函数是可以正常使用的。

  • jupyter notebook运行异常截图

  • spark shell交互界面运行截图

问题解决

1. 问题原因

toDF方法是在SparkSessionSQLContext1.x中的构造函数)构造函数内部执行的猴子补丁,因此要使用它,必须首先创建一个 SQLContext(或SparkSession)。

2. 解决方法

在使用toDF函数时,先创建一个SQLContext或者SparkSession对象实例。如图所示。