Мы обновили кластер HDP до версии 3.1.1.3.0.1.0-187 и обнаружили:
- Spark не видит базы данных Hive
- Похоже, это не реализованная функция Spark. Но единственный способ использовать Spark и Hive начиная с версии 3.0, который я нашел, - это использовать HiveWarehouseConnector от Хортона. Документация здесь. И хорошее руководство от сообщества Horton здесь. Я оставляю вопрос без ответа, пока разработчики Spark не подготовят собственное решение.
Фактически мы видим:
org.apache.spark.sql.catalyst.analysis.NoSuchDatabaseException: Database ... not found
Не могли бы вы помочь мне понять, что произошло и как это решить?
Обновление:
Конфигурация:
И из hive-site.xml:
Код выглядит так:
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/warehouse/tablespace/managed/hive</value>
</property>
Искра-отправка:
val spark = SparkSession
.builder()
.appName(getClass.getSimpleName)
.enableHiveSupport()
.getOrCreate()
...
dataFrame.write
.format("orc")
.options(Map("spark.sql.hive.convertMetastoreOrc" -> true.toString))
.mode(SaveMode.Append)
.saveAsTable("name")
У Hive появилось новое местоположение хранилища метаданных
--master yarn \
--deploy-mode client \
--driver-memory 2g \
--driver-cores 4 \
--executor-memory 2g \
--num-executors 10 \
--executor-cores 3 \
--conf "spark.dynamicAllocation.enabled=true" \
--conf "spark.shuffle.service.enabled=true" \
--conf "spark.executor.extraJavaOptions=-Djavax.net.ssl.trustStore=cacerts" \
--conf "spark.sql.warehouse.dir=/warehouse/tablespace/external/hive/" \
--jars postgresql-42.2.2.jar,ojdbc6.jar \
--files config.yml,/opt/jdk1.8.0_172/jre/lib/security/cacerts \
--verbose \
component-assembly-0.1.0-SNAPSHOT.jar \