Доступ к таблицам Hive с помощью Spark SQL - PullRequest
0 голосов
/ 02 мая 2019

Я установил кластер AWS EMR, который включает в себя spark 2.3.2, hive 2.3.3 и hbase 1.4.7.Как настроить spark для доступа к таблицам кустов?

Я предпринял следующие шаги, но в результате выдается сообщение об ошибке:

java.lang.ClassNotFoundException: java.lang.NoClassDefFoundError: org / apache / tez / dag / api / SessionNotRunning при создании клиента Hive с использованием classpath:

Пожалуйста, убедитесь, что jar для вашей версии hive и hadoop включены в пути, передаваемые в spark.sql.hive.metastore.jars

Шаги:

  1. cp /usr/lib/hive/conf/hive-site.xml /usr/lib/spark/conf
  2. В /usr/lib/spark/conf/spark-defaults.conf добавлено:

    искра.sql.hive.metastore.jars / usr / lib / hadoop / lib / *: / usr / lib / hive / lib / *

  3. В zeppelin я создаю сеанс spark:

    val spark = SparkSession.builder.appName ("подсказка"). EnableHiveSupport (). GetOrCreate () импорт spark.implicits ._

1 Ответ

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

Шаг (1, & 2), о котором вы упомянули, частично в порядке, за исключением небольшого изменения, которое может вам помочь.

Поскольку вы используете hive-2.x, настройте spark.sql.hive.metastore.jars и установите вместо него maven и spark.sql.hive.metastore.version в соответствии с версией вашего метастаза 2.3.3. Достаточно просто использовать 2.3 в качестве версии, посмотрите, почему в Apache Spark Code

Вот пример моей рабочей конфигурации, которую я установил в spark-default.conf:

spark.sql.broadcastTimeout  600 # An arbitrary number that you can change
spark.sql.catalogImplementation hive
spark.sql.hive.metastore.jars   maven
spark.sql.hive.metastore.version    2.3  # No need for minor version
spark.sql.hive.thriftServer.singleSession   true
spark.sql.warehouse.dir {hdfs | s3 | etc}
hive.metastore.uris thrift://hive-host:9083

С предыдущей настройкой я смог выполнить запросы к моему хранилищу данных в Zeppelin следующим образом:

val rows = spark.sql("YOUR QUERY").show

Более подробную информацию о подключении к внешнему метастагу улья можно найти здесь ( Databricks )

...