2016-07-05 3 views
4

, когда я код свечи SQL API hiveContext.sql()TypeError: объект '' 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, чем я работал.

Удостоверьтесь, что вы устанавливаете только пути к классу исполнителей и/или драйверов в одном месте и что по умолчанию не применяется ни один системный стандарт, например .bashrc или Spark's conf/spark-env.sh.

Смежные вопросы