Тестирование интеграции Spark Hive с Docker

#docker #apache-spark #hadoop #hive

#docker #apache-spark #hadoop #улей

Вопрос:

У меня есть задание Spark Hive, которое работает нормально.

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

  1. Образы Docker для начальной загрузки сервера Hive, метастора и т. Д
  2. Образ Docker в среде Spark / локальный кластер

Теперь у меня есть docker-compose для # 1, который запускает всю среду (включая метастор Hive), и я могу подключиться к этому метастору с помощью инструмента beeline.

Я могу запустить свой spark с помощью docker run, используя изображение из # 2, и оно запущено.

Проблема, с которой я столкнулся, связана с конфигурацией улья. Всякий раз, когда задание пытается прочитать таблицу в SparkContext, оно завершается с ошибкой:

 [Error] [JvmBridge] java.lang.NoSuchFieldError: HIVE_STATS_JDBC_TIMEOUT
  

Hadoop: 2.7.3
Spark: 2.4.5
hive-metastore jar: 2.1.1

Параметры отправки Spark (/var/ lib — правильный путь):

 --conf spark.sql.hive.metastore.version=2.1.1 --conf spark.sql.hive.metastore.jars=/var/lib/*
  

hive-site.xml (добавлено в папки конфигурации Hive и Spark)

 <configuration>
    <property><name>hive.metastore.warehouse.dir</name><value>hdfs://localhost:50075</value></property>
    <property><name>hive.metastore.uris</name><value>thrift://localhost:9083</value></property>
    <property><name>spark.sql.uris</name><value>thrift://localhost:9083</value></property>
    <property><name>hive.exec.dynamic.partition.mode</name><value>nonstrict</value></property>
    <property><name>hive.exec.dynamic.partition</name><value>true</value></property>
</configuration>
  

Как устранить эту ошибку?

Комментарии:

1. Если Spark находится в отдельном контейнере, то localhost при обращении к Hive это не сработает, но «Нет такого поля» будет указывать на ошибку в управлении версиями добавляемых вами jar

2. с именем хоста проблем нет. Я привел localhost в качестве примера. есть ли шанс получить правильный список версий библиотеки?

3. Я никогда не видел, чтобы эти конфигурации переопределяли версию metastore или jars. Из коробки интеграция Spark-Hive должна работать при условии, что URI метахрана верны… Тем не менее, я лично не пробовал менять какие-либо версии Hive