Catalogue Spark avec AWS Glue : base de données introuvable
J'ai créé un cluster EMR avec le catalogue Glue Data. Lorsque j'invoque le spark-shell, je peux répertorier avec succès les tables stockées dans une base de données Glue via
spark.catalog.setCurrentDatabase("test")
spark.catalog.listTables
Cependant, lorsque je soumets un travail via spark-submit
, j'obtiens une erreur fatale
ERROR ApplicationMaster: User class threw exception: org.apache.spark.sql.AnalysisException: Database 'test' does not exist.;
Je crée ma SparkSession dans le travail soumis via spark-submit
via
SparkSession.builder.enableHiveSupport.getOrCreate
Solution du problème
L'ajout de la hive.metastore.client.factory.class
configuration au code initiant la session spark a résolu le problème pour moi :
SparkSession spark = SparkSession.builder()
...
.config("hive.metastore.client.factory.class", "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory")
.enableHiveSupport()
.getOrCreate();
c'est la même configuration définie dans aws docs ( https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html ) et ajoutée à la configuration du cluster lors de la vérification Use for Hive table metadata
de la création du cluster, mais pour certains la raison ne fonctionne pas comme prévu (j'utilise emr 5.12.0).
Commentaires
Enregistrer un commentaire