2016-07-13 46 views
3

我正在使用Jupyter筆記本對pySpark進行分析。我的代碼最初使用sqlContext = SQLContext(sc)構建數據框,但現在我已切換到HiveContext,因爲我將使用窗口函數。HiveContext createDataFrame不工作在pySpark(jupyter)

我的問題是,現在試圖創建數據幀時,我得到一個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 

我一直在Google上搜尋它沒有運氣這麼遠。任何意見是極大的讚賞。

+0

它看起來就像你自己打造星火,對嗎?如果是這種情況,你能否提供一些有關該方法的細節? – zero323

+0

@ zero323是的,我跟着一個非常類似於這個教程的教程:http://blog.prabeeshk.com/blog/2014/10/31/install-apache-spark-on-ubuntu-14-dot-04 /。它看起來像一個配置問題?如果您對如何解決此問題有任何建議,我願意重新安裝。謝謝。 –

回答

1

HiveContext要求使用Hive支持構建二進制文件。這意味着你必須啓用Hive配置文件。由於您使用sbt assembly你至少需要:

sbt -Phive assembly 

與Maven構建時,例如同樣是必需的:

mvn -Phive -DskipTests clean package 
+0

謝謝,我已經嘗試過'sbt -Phive assembly',但現在它抱怨'不是有效的命令:Phive'。在嘗試組裝之前,我是否需要下載任何內容或執行任何其他操作? –

+0

我聽起來不對。你確定那兒沒有遺漏嗎?你有沒有安裝?如果不是那麼你可以使用'build/sbt'。如果你不能解決這個問題,你也可以嘗試不推薦使用:'SPARK_HIVE = true build/sbt assembly' – zero323

+0

我確實已經安裝了,當我運行命令時它開始編譯,但幾分鐘後失敗。以下是sbt -Phive程序集的完整輸出日誌:http://pastebin.com/yMDzk5WD您有任何建議嗎?我有點不能訪問所有的HiveContext函數。 –