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