Я работаю с эфемерными кластерами GCP Dataproc (Apache Spark 2.2.1, Apache Hadoop 2.8.4 и Apache Hive 2.1.1). Все эти кластеры указывают на один и тот же Hive Metastore (размещенный в экземпляре Google Cloud SQL).
Я создал базу данных на одном из таких кластеров и установил ее местоположение в 'HDFS: /// database_name', например, так:
$ gcloud dataproc jobs submit hive \
-e "create database db_name LOCATION 'hdfs:///db_name'" \
--cluster=my-first-ephemeral-cluster --region=europe-west1
my-first-ephemeral-cluster
затем был удален и вместе с ним связанная HDFS.
На всех последующих кластерах появляется следующая ошибка:
u'java.net.UnknownHostException: my-first-ephemeral-cluster-m'
Вероятно, это связано с тем, что в Has Metastore теперь есть запись о местоположении, которое не существует.
Попытка удалить поврежденную базу данных также не нужна:
$ gcloud dataproc jobs submit hive \
-e 'drop database db_name' \
--cluster=my-second-ephemeral-cluster --region=europe-west1
Job [4462cb1d-88f2-4e2b-8a86-c342c0ce46ee] submitted.
Waiting for job output...
Connecting to jdbc:hive2://my-second-ephemeral-cluster-m:10000
Connected to: Apache Hive (version 2.1.1)
Driver: Hive JDBC (version 2.1.1)
18/11/03 13:40:04 [main]: WARN jdbc.HiveConnection: Request to set autoCommit to false; Hive does not support autoCommit=false.
Transaction isolation: TRANSACTION_REPEATABLE_READ
Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.IllegalArgumentException: java.net.UnknownHostException: my-first-ephemeral-cluster-m) (state=08S01,code=1)
Closing: 0: jdbc:hive2://my-second-ephemeral-cluster-m:10000
Причина в том, что хост my-first-ephemeral-cluster-m
больше не действителен. Поскольку изменение местоположения базы данных не является вариантом в используемой версии куста, мне нужен другой обходной путь для удаления этой базы данных.