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运行异常截图

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

  • spark shell交互界面运行截图

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

 

问题解决

    1. 问题原因

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

    2. 解决方法

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

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