java - 获取异常 "java.lang.NoSuchFieldError: METASTORE_CLIENT_SOCKET_LIFETIME"或 "Required field ' client_protocol' 未设置!”

标签 java apache-spark jdbc hive spark-structured-streaming

我正在使用 Spark 2.1 的结构化流式传输(它在内部使用 Hive 1.2.1 jar)。我正在尝试为 Hive 开发 ForEachWriter,以通过 JDBC 连接器将流数据写入 Hive。

在我的集群上,我有 Hive 1.1.0。

如果我使用 1.2.1 版的 Hive jdbc jar,那么由于 Hive 的客户端和服务器版本不匹配,我会遇到异常:

Required field 'client_protocol' is unset!

如果我使用 1.1.0 版的 Hive jdbc jar,那么我在 Spark 中会遇到如下异常:

Caused by: java.lang.NoSuchFieldError: METASTORE_CLIENT_SOCKET_LIFETIME

它在 SparkSession 中初始化 HiveContext 时出现。

最佳答案

我遇到了同样的问题并找到了 HIVE-9508 .我建议你将 hive 升级到 1.2.1 或更高版本。

关于java - 获取异常 "java.lang.NoSuchFieldError: METASTORE_CLIENT_SOCKET_LIFETIME"或 "Required field ' client_protocol' 未设置!”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44151374/

相关文章:

java - 使用 JDBC 和 MySQL 优化大量插入

java - 我应该使用什么命令来解决这个问题?

java - 继承的方法是否计入 Android 中的 Dex 方法限制?

apache-spark - 在 PySpark 中获取序列文件格式文件的 HDFS 文件路径

java - executeUpdate 异常

Java 日期格式

java - android中如何通过经纬度获取城市信息

java - 在 SQlite 数据库中添加新行然后在 ListView 中添加新行时,所有列表行在自定义 ListView 中重复

python - 创建一个包含每个文件的架构数据的数据框

mysql - 如何使用 Spark 从 .sql 转储中提取包含数据的表?