web-dev-qa-db-fra.com

TypeError: l'objet 'JavaPackage' n'est pas appelable

quand je code l'API spark sql hiveContext.sql ()

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()

J'ai eu l'erreur suivante:

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

comment puis-je ajouter SPARK_CLASSPATH ou SparkContext.addFile? Je n'en ai aucune idée.

7
林雅峰

Peut-être que cela vous aidera: lors de l'utilisation de HiveContext, je dois ajouter trois fichiers jar aux arguments spark-submit:

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 ...

Bien entendu, les chemins et les versions dépendent de la configuration de votre cluster.

4
Christian Z.

Dans mon cas, il s’est avéré qu’il s’agissait d’un problème lié au chemin de classe: javascript présent sur le chemin de la classe Hadoop était une mauvaise version de Hadoop que celle que j’exécutais.

Assurez-vous de ne définir que les chemins d'accès aux classes d'exécuteur et/ou de pilote à un seul endroit et qu'aucun système par défaut, tel que .bashrc ou conf/spark-env.sh de Spark, n'est appliqué par défaut.

0
dskrvk