首页 > 解决方案 > Spark+Hive 与 Docker 的集成测试

问题描述

我的 Spark+Hive 工作运行良好。

我正在尝试为本地开发和集成测试配置环境:

  1. 用于引导 Hive 服务器、元存储等的Docker映像
  2. 带有 Spark 环境/本地集群的Docker映像

现在我有 docker-compose for #1 运行整个环境(包括 Hive 元存储),我可以使用直线工具连接到这个元存储。

我可以使用 docker run 使用#2 中的图像运行我的 spark 并且它正在运行。

我遇到的问题与 Hive 配置有关。每当作业尝试读取 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>

如何揭开这个错误的神秘面纱?

标签: dockerapache-sparkhadoophive

解决方案


推荐阅读