У меня кластер AWS EMR (v5.11.1) с Spark (v2.2.1), и я пытаюсь использовать каталог данных клея AWS в качестве метастаза. В соответствии с рекомендациями, приведенными в официальной документации AWS (ссылка на ссылку ниже), я выполнил шаги, но столкнулся с некоторыми расхождениями в отношении доступа к базе данных / таблицам каталога клея. EMR Cluster и AWS Glue находятся в одной учетной записи , и были предоставлены соответствующие разрешения IAM.
Документация AWS : https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html
Замечания:
- Использование искровой оболочки (от главного узла EMR):
- Работает . Возможность доступа к базе данных Glue / таблицам с помощью следующих команд:
spark.catalog.setCurrentDatabase("test_db")
spark.catalog.listTables
- Использование spark-submit (с шага EMR):
- Не работает . Постоянно получаю сообщение об ошибке «База данных 'test_db' не существует"
Ошибка трассировки, как показано ниже:
INFO HiveClientImpl: расположение хранилища для клиента Hive (версия 1.2.1): hdfs: /// пользователь / spark / warehouse
ИНФОРМАЦИЯ HiveMetaStore: 0: get_database: по умолчанию
ИНФОРМАЦИОННЫЙ аудит: ugi = hadoop ip = unknown-ip-addr cmd = get_database: default
ИНФОРМАЦИЯ HiveMetaStore: 0: get_database: global_temp
ИНФОРМАЦИОННЫЙ аудит: ugi = hadoop ip = unknown-ip-addr cmd = get_database: global_temp
WARN ObjectStore: не удалось получить базу данных global_temp, возвращая NoSuchObjectException
INFO SessionState: создан локальный каталог: / mnt3 / yarn / usercache / hadoop / appcache / application_1547055968446_0005 / container_1547055968446_0005_01_000001 / tmp / 6d0f6b2c-cccd-4e90-a524-93dcc530149 *
INFO SessionState: создан каталог HDFS: / tmp / hive / hadoop / 6d0f6b2c-cccd-4e90-a524-93dcc5301e20
INFO SessionState: создан локальный каталог: / mnt3 / yarn / usercache / hadoop / appcache / application_1547055968446_0005 / container_1547055968446_0005_01_000001 / tmp / yarn / 6d0f6b2c-cccd-4e90-a524-20d51 * 10 * 51015
INFO SessionState: создан каталог HDFS: /tmp/hive/hadoop/6d0f6b2c-cccd-4e90-a524-93dcc5301e20/_tmp_space.db
ИНФОРМАЦИЯ HiveClientImpl: расположение хранилища для клиента Hive (версия 1.2.1): hdfs: /// пользователь / spark / warehouse
ИНФОРМАЦИЯ StateStoreCoordinatorRef: Зарегистрированная конечная точка StateStoreCoordinator
INFO CodeGenerator: код, сгенерированный в> 191.063411 мс
INFO CodeGenerator: код, сгенерированный за 10.27313 мс
ИНФОРМАЦИЯ HiveMetaStore: 0: get_database: test_db
ИНФОРМАЦИОННЫЙ аудит: ugi = hadoop ip = unknown-ip-addr cmd = get_database: test_db
WARN ObjectStore: не удалось получить базу данных test_db, возвращая NoSuchObjectException
org.apache.spark.sql.AnalysisException: база данных 'test_db' не существует .;
в org.apache.spark.sql.internal.CatalogImpl.requireDatabaseExists (CatalogImpl.scala: 44)
в org.apache.spark.sql.internal.CatalogImpl.setCurrentDatabase (CatalogImpl.scala: 64)
на org.griffin_test.GriffinTest.ingestGriffinRecords (GriffinTest.java:97)
на org.griffin_test.GriffinTest.main (GriffinTest.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:498)
в org.apache.spark.deploy.yarn.ApplicationMaster $$ anon $ 2.run (ApplicationMaster.scala: 635)
После долгих исследований и изучения множества предложений в блогах я попробовал следующие исправления, но безрезультатно, и мы все еще сталкиваемся с расхождением.
Справочные блоги:
Попытки исправления:
- Включение поддержки Hive в spark-defaults.conf & SparkSession (Код):
Фрагмент кода:
SparkSession spark = SparkSession.builder().appName("Test_Glue_Catalog")
.config("spark.sql.catalogImplementation", "hive")
.config("hive.metastore.connect.retries", 15)
.config("hive.metastore.client.factory.class","com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory")
.enableHiveSupport()
.getOrCreate();
Любые предложения по выяснению первопричины такого расхождения были бы очень полезны.
Ценю вашу помощь! Спасибо!