如何使用spark2.0连接到hive-jdbc-1.1.0

时间:2016-11-09 09:00:27

标签: jdbc apache-spark hive

我有一个问题。当我运行我的spark任务时,在本地使用hive-jdbc,我可以连接hive。但是当我在使用spark-submit的集群中运行它时,它失败了。

  

线程“main”中的异常java.sql.SQLException:无法建立与jdbc的连接:hive2://172.16.28.99:10000 / vdm_da_dev.db:未设置必填字段'client_protocol'! Struct:TOpenSessionReq(client_protocol:null,configuration:{use:database = vdm_da_dev.db})“

客户端为hive-jdbc-1.1.0-cdh5.6.0,服务器为hive-1.1.0-cdh5.6.0. 但是火花是spark-2.0.0/opt/spark/jars中的hive-jdbc是hive-jdbc-1.2.1.spark2.jar

我将其替换为所有节点的hive-jdbc-1.1.0-cdh5.6.0.jar,但仍然是错误的。

我使用依赖项打包项目,但在spark-submit中,它没有使用它们。 我该怎么办?

拜托,任何人都可以帮助我。非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用cloudera中的指南来获取其他参数: running spark apps on cloudera

一般来说,spark-submit应该如下:

spark-submit --class *class_main* \
--master yarn \
--deploy-mode cluster \
--conf "key=value" \
--files path_to_spark_conf/hive-site.xml \
--jars full_path/addiational_dependecy_jars \
app_package.jar

--jars中,您可能需要提供datanucleus-core, datanucleus-rdbms, datanucleus-api-jdo才能使用hive和hive Metastore。

答案 1 :(得分:0)

非常感谢FaigB!

我做了@FaigB告诉我,但我发现依赖类路径中没有依赖jar。

然后我删除了/ opt / spark / jars /中的所有hive依赖jar,并从/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/jars/复制它们。然后我解决了不匹配版本的错误。

就像:

-rw-r--r--. 1 spark spark   138464 8月  19 13:55 hive-beeline-1.2.1.spark2.jar_bk
-rw-r--r--. 1 spark spark    37995 11月 15 01:00 hive-cli-1.1.0-cdh5.6.0.jar
-rw-r--r--. 1 spark spark    40817 8月  19 13:55 hive-cli-1.2.1.spark2.jar_bk
-rw-r--r--. 1 spark spark 11498852 8月  19 13:55 hive-exec-1.2.1.spark2.jar_bk
-rw-r--r--. 1 spark spark    95006 11月  9 14:59 hive-jdbc-1.1.0-cdh5.6.0.jar
-rw-r--r--. 1 spark spark   100680 8月  19 13:55 hive-jdbc-1.2.1.spark2.jar_bk
-rw-r--r--. 1 spark spark  5505200 8月  19 13:55 hive-metastore-1.2.1.spark2.jar_bk
-rw-r--r--. 1 spark spark  1874242 11月 15 01:00 hive-service-1.1.0-cdh5.6.0.jar
-rw-r--r--. 1 spark spark  1033763 8月  19 13:55 spark-hive_2.11-2.0.0.jar_bk
-rw-r--r--. 1 spark spark  1813851 8月  19 13:55 spark-hive-thriftserver_2.11-2.0.0.jar_bk

[spark@d2 jars]$ cp  hive-service-1.1.0-cdh5.6.0.jar /opt/spark/jars/
[spark@d2 jars]$ cp hive-cli-1.1.0-cdh5.6.0.jar /opt/spark/jars/
[spark@d2 jars]$ cp spark-hive_2.10-1.5.0-cdh5.6.0.jar /opt/spark/jars/
[spark@d2 jars]$ cp hive-exec-1.1.0-cdh5.6.0.jar /opt/spark/jars/
[spark@d2 jars]$ cp hive-metastore-1.1.0-cdh5.6.0.jar /opt/spark/jars/
[spark@d2 jars]$ cp hive-beeline-1.1.0-cdh5.6.0.jar /opt/spark/jars/