Spark peut accéder à la table Hive de pyspark mais pas à spark-submit
Donc, lors de l'exécution de pyspark je voudrais taper (sans préciser les contextes) :
df_openings_latest = sqlContext.sql('select * from experian_int_openings_latest_orc')
.. et il fonctionne très bien.
Cependant, lorsque je lance mon script de spark-submit
comme
spark-submit script.py
j'ai mis la suivante dans
from pyspark.sql import SQLContext
from pyspark import SparkConf, SparkContext
conf = SparkConf().setAppName('inc_dd_openings')
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)
df_openings_latest = sqlContext.sql('select * from experian_int_openings_latest_orc')
Mais il me donne une erreur
pyspark.sql.utils.AnalysisException: u'Table pas trouvé:
experian_int_openings_latest_orc;'
Si elle ne marche pas, voir mon tableau.
Ce que je fais mal? S'il vous plaît aider
P. S. Spark version 1.6 en cours d'exécution sur Amazon EMR
source d'informationauteur Dennis
Vous devez vous connecter pour publier un commentaire.
Spark 2.x
Le même problème peut se produire dans Spark 2.x si
SparkSession
a été créé sans l'activation de la Ruche de soutien.Étincelle 1.x
Il est assez simple. Lorsque vous utilisez PySpark shell, et l'Étincelle a été construit avec de la Ruche de soutien, par défaut
SQLContext
mise en œuvre (disponible comme unsqlContext
) estHiveContext
.Dans votre application autonome, vous utilisez la plaine
SQLContext
qui ne fournit pas de Ruche capacités.En supposant que le reste de la configuration est correcte, il suffit de remplacer:
avec
Spark 2.x (Amazon EMR 5+) vous permettra de rencontrer ce genre de problème avec
spark-submit
si vous n'activez pas la Ruche de soutien comme ceci:Votre problème peut être lié à votre
Hive
configurations. Si vos configurations d'utilisationlocal metastore
lemetastore_db
répertoire est créé dans le répertoire que vous avez commencé à vousHive
serveur.Depuis
spark-submit
est lancé à partir d'un autre répertoire, la création d'une nouvellemetastore_db
dans ce répertoire qui ne contient pas d'informations sur vos tables précédentes.Une solution rapide serait de commencer le
Hive
serveur à partir du même répertoire quespark-submit
et re-créer vos tables.Un plus solution permanente est référencé dans ce DONC, après les
Vous avez besoin de changer votre configuration dans
$HIVE_HOME/conf/hive-site.xml
Vous devriez maintenant être en mesure d'exécuter la ruche à partir de n'importe quel endroit et encore à trouver votre tables