HiveContext createDataFrame无法在pySpark上工作(jupyter)

时间:2016-07-13 20:00:47

标签: java python apache-spark pyspark spark-hive

我正在使用Jupyter笔记本对pySpark进行分析。我的代码最初使用sqlContext = SQLContext (sc)构建数据帧,但现在我已切换到 HiveContext ,因为我将使用窗口函数。

我的问题是,现在我在尝试创建数据帧时遇到了Java错误:

## Create new SQL Context.
from pyspark.sql import SQLContext
from pyspark.sql import DataFrame
from pyspark.sql import Window
from pyspark.sql.types import *
import pyspark.sql.functions as func

sqlContext = HiveContext(sc)

在此之后,我将我的数据读入RDD,并为我的DF创建模式。

## After loading the data we define the schema.
fields = [StructField(field_name, StringType(), True) for field_name in data_header]
schema = StructType(fields)

现在,当我尝试构建DF时,这是我得到的错误:

## Build the DF.
data_df = sqlContext.createDataFrame(data_tmp, schema)

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
...
/home/scala/spark-1.6.1/python/pyspark/sql/context.pyc in _get_hive_ctx(self)
    690 
    691     def _get_hive_ctx(self):
--> 692         return self._jvm.HiveContext(self._jsc.sc())
    693 
    694     def refreshTable(self, tableName):

TypeError: 'JavaPackage' object is not callable

到目前为止,我一直在谷歌上搜索它。非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

HiveContext需要使用Hive支持构建二进制文件。这意味着您必须启用Hive配置文件。由于您使用sbt assembly,至少需要:

sbt -Phive assembly

使用Maven构建时也需要相同的内容,例如:

mvn -Phive -DskipTests clean package