Apache Spark 2.3.1 с метастарком Hive 3.1.0 - PullRequest
0 голосов
/ 26 октября 2018

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

  1. У улья новое местоположение метастаза
  2. Spark не видит базы данных Hive

На самом деле мы видим:

org.apache.spark.sql.catalyst.analysis.NoSuchDatabaseException: Database ... not found

Не могли бы вы помочь мне понять, что произошло и как это решить?

Обновление:

Конфигурация:

(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, / и т.д. / безопасность / keytabs / spark.service.keytab) (Spark.io.compression.lz4.blockSize, 128kb) (Spark.executor.extraJavaOptions, -Djavax.net.ssl.trustStore = cacerts) (Spark.history.fs.logDirectory, HDFS: /// spark2-история /) (Spark.io.encryption.keygen.algorithm, HmacSHA1) (Spark.sql.autoBroadcastJoinThreshold, 26214400) (spark.eventLog.enabled, true) (spark.shuffle.service.enabled, true) (Spark.driver.extraLibraryPath, / USR / HDP / ток / Hadoop-клиент / Lib / родной: / USR / HDP / ток / Hadoop-клиент / Библиотека / нативный / Linux-amd64-64) (Spark.ssl.keyStore, / и т.д. / безопасность / serverKeys / сервер-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.file.output.buffer, 5m) (Spark.yarn.historyServer.address, master2.env.project: 18481) (Spark.ssl.trustStore, / и т.д. / безопасность / clientKeys / all.jks) (Spark.app.name, com.company.env.component.MyClass) (Spark.sql.hive.metastore.jars, / USR / HDP / ток / spark2-клиент / автономная-metastore / *) (spark.io.encryption.keySizeBits, 128) (spark.driver.memory, 2g) (Spark.executor.instances, 10) (Spark.history.kerberos.principal, искра / edge.env.project @ ENV.PROJECT) (Spark.unsafe.sorter.spill.reader.buffer.size, 1m) (Spark.ssl.keyPassword, ********* (отредактированный)) (Spark.ssl.keyStorePassword, ********* (отредактированный)) (Spark.history.fs.cleaner.enabled, правда) (Spark.shuffle.io.serverThreads, 128) (Spark.sql.hive.convertMetastoreOrc, правда) (spark.submit.deployMode, клиент) (spark.sql.orc.char.enabled, true) (spark.master, пряжа) (spark.authenticate.enableSaslEncryption, true) (spark.history.fs.cleaner.interval, 7d) (spark.authenticate, true) (Spark.history.fs.cleaner.maxAge, 90d) (spark.history.ui.acls.enable, true) (spark.acls.enable, true) (Spark.history.provider, org.apache.spark.deploy.history.FsHistoryProvider) (Spark.executor.extraLibraryPath, / USR / HDP / ток / Hadoop-клиент / Lib / родной: / USR / HDP / ток / Hadoop-клиент / Библиотека / нативный / 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, правда) (Spark.repl.local.jars, файл: ///opt/folder/postgresql-42.2.2.jar,file: ///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_AES_256_CBC_SHA) (Spark.sql.orc.enabled, правда) (Spark.yarn.dist.jars, файл: ///opt/folder/postgresql-42.2.2.jar,file: ///opt/folder/ojdbc6.jar) (Spark.sql.hive.metastore.version, 3,0)

А из 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")

искровым представить:

    --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 \

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

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

Для использования с искровым корпусом

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

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

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'

Это также должно работать для экономичного сервера, но я не проверял.

0 голосов
/ 30 октября 2018

Похоже, это не реализованная функция Spark .Но единственный найденный мной способ использования Spark и Hive начиная с версии 3.0 - это использование HiveWarehouseConnector от Horton.Документация здесь .И хороший гид от Horton Community здесь .Я оставляю вопрос без ответа, пока разработчики Spark не подготовят собственное решение.

...