Невозможно получить доступ к каталогу склада Hive с помощью Spark - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь подключиться к каталогу хранилища Hive с помощью Spark на IntelliJ, который расположен по следующему пути:

hdfs://localhost:9000/user/hive/warehouse

Для этого я использую следующий код:

import org.apache.spark.sql.SparkSession

// warehouseLocation points to the default location for managed databases and tables
val warehouseLocation = "hdfs://localhost:9000/user/hive/warehouse"

val spark = SparkSession
 .builder()
 .appName("Spark Hive Local Connector")
 .config("spark.sql.warehouse.dir", warehouseLocation)
 .config("spark.master", "local")
 .enableHiveSupport()
 .getOrCreate()

spark.catalog.listDatabases().show(false)
spark.catalog.listTables().show(false)
spark.conf.getAll.mkString("\n")

import spark.implicits._
import spark.sql

sql("USE test")
sql("SELECT * FROM test.employee").show()

Как видите, я создал базу данных 'test' и создал таблицу 'employee' в этой базе данных с помощью консоли куста.Я хочу получить результат последнего запроса.

'spark.catalog.'и "spark.conf."используются для печати свойств пути хранилища и настроек базы данных.

spark.catalog.listDatabases().show(false) дает мне:

  • имя: по умолчанию
  • описание: база данных Hive по умолчанию
  • locationUri: hdfs: // localhost: 9000/ пользователь / улей / склад

spark.catalog.listTables.show(false) дает мне пустой результат.Так что на этом шаге что-то не так.

В конце выполнения задания я получил следующую ошибку:

> Exception in thread "main" org.apache.spark.sql.catalyst.analysis.NoSuchDatabaseException: Database 'test' not found;

Я также настроил файл hive-site.xmlдля хранилища Hive:

<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://localhost:9000/user/hive/warehouse</value>
</property>

Я уже создал тестовую базу данных с помощью консоли Hive.

Ниже приведены версии моих компонентов:

  • Spark: 2.2.0
  • Улей: 1.1.0
  • Hadoop: 2.7.3

Есть идеи?

1 Ответ

0 голосов
/ 18 декабря 2018

Создайте каталог ресурсов под src в вашем проекте IntelliJ, скопируйте файлы conf в эту папку.Создайте проект. Убедитесь, что для правильного определения пути hive.metastore.warehouse.uris используется файл hive-site.xml.В журнале, если вы получаете INFO metastore: подключен к metastore, тогда вы готовы.Пример.

Пожалуйста, обратите внимание, что подключение к intellij и запуск задания будут медленными по сравнению с пакетом jar и выполнением в вашем кластере hadoop.

...