2016-07-05 52 views
4

當我編寫的火花SQL API hiveContext.sql()類型錯誤: 'JavaPackage' 對象不是可調用

from pyspark import SparkConf,SparkContext 
from pyspark.sql import SQLContext,HiveContext 

conf = SparkConf().setAppName("spark_sql") 

sc = SparkContext(conf = conf) 
hc = HiveContext(sc) 

#rdd = sc.textFile("test.txt") 
sqlContext = SQLContext(sc) 
res = hc.sql("use teg_uee_app") 
#for each in res.collect(): 
# print(each[0]) 
sc.stop() 

我得到了以下錯誤:

enFile "spark_sql.py", line 23, in <module> 
res = hc.sql("use teg_uee_app") 
File "/spark/python/pyspark/sql/context.py", line 580, in sql 
    return DataFrame(self._ssql_ctx.sql(sqlQuery), self) 
File "/spark/python/pyspark/sql/context.py", line 683, in _ssql_ctx 
    self._scala_HiveContext = self._get_hive_ctx() 
File "/spark/python/pyspark/sql/context.py", line 692, in _get_hive_ctx 
return self._jvm.HiveContext(self._jsc.sc()) 
    TypeError: 'JavaPackage' object is not callable 

我怎麼加SPARK_CLASSPATH或SparkContext.addFile?我不知道。

回答

2

也許這將幫助你:當使用HiveContext我有三個罐子添加到火花提出的論點:

spark-submit --jars /usr/lib/spark/lib/datanucleus-api-jdo-3.2.6.jar,/usr/lib/spark/lib/datanucleus-core-3.2.10.jar,/usr/lib/spark/lib/datanucleus-rdbms-3.2.9.jar ... 

當然的路徑和版本取決於您的集羣設置。

0

在我的情況下,這是一個類路徑問題 - 我在類路徑上有一個Hadoop jar,與我運行時相比Hadoop版本錯誤。

確保只設置執行程序和/或驅動程序類路徑在一個地方,有沒有全系統的默認應用的地方,如.bashrc或火花的conf/spark-env.sh

相關問題