Apache Spark 2.3.1 с хранилищем метаданных Hive 3.1.0

Мы обновили кластер HDP до версии 3.1.1.3.0.1.0-187 и обнаружили:

  1. Spark не видит базы данных Hive
  2. Похоже, это не реализованная функция 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 \

person Eugene Lopatkin    schedule 26.10.2018    source источник
comment
Можете ли вы проверить значение _1_ и, возможно, _2_? Не могли бы вы включить в вопрос вкладку Environment из веб-интерфейса? Вы всегда можете использовать _3_ в CLASSPATH, чтобы указать на каталог.   -  person Avishek Bhattacharya    schedule 26.10.2018
comment
Кстати, я не могу найти версию HDP на docs.hortonworks.com. Последней кажется HDP-3.0.1. Я немного запутался.   -  person Jacek Laskowski    schedule 26.10.2018
comment
Спасибо за быстрый ответ, ребята. Яцек, эта сборка: repo.hortonworks.com/content/repositories/releases/org/apache/   -  person Jacek Laskowski    schedule 26.10.2018
comment
Как получить доступ к таблице Hive? Можете ли вы показать точный запрос (например, _1_)? Какой каталог на складе Hive? Можете ли вы проверить все переменные среды, связанные с _2_-, _3_- или _4_?   -  person Eugene Lopatkin    schedule 26.10.2018
comment
Яцек, какие переменные Hadoop, YARN и Hive мне следует проверить?   -  person Jacek Laskowski    schedule 26.10.2018
comment
Avishek, ручное добавление hive-site.xml не помогает.   -  person Eugene Lopatkin    schedule 26.10.2018
comment
Есть идеи, ребята?   -  person Eugene Lopatkin    schedule 26.10.2018
comment
(spark.sql.warehouse.dir, / склад / табличное пространство / внешний / улей /) (spark.admin.acls,) (spark.yarn.dist.files, файл: ///opt/folder/config.yml,file : ///opt/jdk1.8.0_172/jre/lib/security/cacerts) (spark.history.kerberos.keytab, / etc / security / keytabs / spark.service.keytab) (spark.io.compression.lz4. blockSize, 128 КБ) (spark.executor.extraJavaOptions, -Djavax.net.ssl.trustStore = cacerts) (spark.history.fs.logDirectory, hdfs: /// spark2-history /) (spark.io.encryption.keygen. алгоритм, HmacSHA1) (spark.sql.autoBroadcastJoinThreshold, 26214400) (spark.eventLog.enabled, true) (spark.shuffle.service.enabled, true) (spark.driver.extraLibraryPath, / usr / hdp / current / hadoop-client / lib / native: / usr / hdp / current / hadoop-client / lib / native / Linux-amd64-64) (spark.ssl.keyStore, / etc / security / serverKeys / server-keystore.jks) (spark.yarn .queue, по умолчанию) (spark.jars, файл: /opt/folder/component-assembly-0.1.0-SNAPSHOT.jar) (spark.ssl.enabled, true) (spark.sql.orc.filterPushdown, true) ( spark.shuffle.unsafe.fi le.output.buffer, 5m) (spark.yarn.historyServer.address, master2.env.project: 18481) (spark.ssl.trustStore, / etc / security / clientKeys / all.jks) (spark.app.name, com.company.env.component.MyClass) (spark.sql.hive.metastore.jars, / usr / hdp / current / spark2-client / standalone-metastore / *) (spark.io.encryption.keySizeBits, 128) ( spark.driver.memory, 2g) (spark.executor.instances, 10) (spark.history.kerberos.principal, spark / edge.env.project @ ENV.PROJECT) (spark.unsafe.sorter.spill.reader.buffer .size, 1 м) (spark.ssl.keyPassword, ********* (отредактировано)) (spark.ssl.keyStorePassword, ********* (отредактировано)) (spark.history. fs.cleaner.enabled, true) (spark.shuffle.io.serverThreads, 128) (spark.sql.hive.convertMetastoreOrc, true) (spark.submit.deployMode, клиент) (spark.sql.orc.char.enabled, true) (spark.master, yarn) (spark.authenticate.enableSaslEncryption, true) (spark.history.fs.cleaner.interval, 7d) (spark.authenticate, true) (spark.history.fs.cleaner.maxAge, 90d ) (spark.history.ui.acls.enab le, true) (spark.acls.enable, true) (spark.history.provider, org.apache.spark.deploy.history.FsHistoryProvider) (spark.executor.extraLibraryPath, / usr / hdp / current / hadoop-client / lib / native: / usr / hdp / current / hadoop-client / lib / native / Linux-amd64-64) (spark.executor.memory, 2g) (spark.io.encryption.enabled, true) (spark.shuffle. file.buffer, 1m) (spark.eventLog.dir, hdfs: /// spark2-history /) (spark.ssl.protocol, TLS) (spark.dynamicAllocation.enabled, true) (spark.executor.cores, 3) (spark.history.ui.port, 18081) (spark.sql.statistics.fallBackToHdfs, true) (spark.repl.local.jars, файл: /// opt / folder / postgresql-42. 2.2.jar, файл: ///opt/folder/ojdbc6.jar) (spark.ssl.trustStorePassword, ********* (отредактировано)) (spark.history.ui.admin.acls,) ( spark.history.kerberos.enabled, true) (spark.shuffle.io.backLog, 8192) (spark.sql.orc.impl, родной) (spark.ssl.enabledAlgorithms, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_cBC.SHA_QUE_WITH_CBC.SHA) включено, истина) (spark.yarn.dist.jars, файл: ///opt/folder/postgresql-42.2.2.jar, файл: ///opt/folder/ojdbc6.jar) (spark.sql.hive. metastore.version, 3.0)   -  person Eugene Lopatkin    schedule 29.10.2018


Ответы (2)


У меня есть небольшой трюк с возвратом для этого, хотя отказ от ответственности, он обходит разрешения рейнджера (не обвиняйте меня, если вы навлечете на себя гнев администратора).

person Eugene Lopatkin    schedule 30.10.2018

Для использования с искровой гильзой

Для использования с sparklyR

export HIVE_CONF_DIR=/usr/hdp/current/hive-client/conf
spark-shell --conf "spark.driver.extraClassPath=/usr/hdp/current/hive-client/conf"

Он должен работать и для сберегательного сервера, но я не тестировал.

Sys.setenv(HIVE_CONF_DIR="/usr/hdp/current/hive-client/conf")
conf = spark_config()
conf$'sparklyr.shell.driver-class-path' = '/usr/hdp/current/hive-client/conf'

Не могли бы вы попробовать передать местоположение hive.xml в spark-submit как команду --file?

person Gabe Church    schedule 12.05.2019