需要先将hadoop的core-site.xml,hive的hive-site.xml拷贝到project中
测试代码
![SparkSQL访问Hive遇到的问题及解决方法](https://s3.51cto.com/oss/201910/11/d86a0824c6c9e17a2bb4466e6e37ea7f.jpeg)
报错
![SparkSQL访问Hive遇到的问题及解决方法](https://s2.51cto.com/oss/201910/11/9012508c7c2307ae8abc7f50a1c28cb8.jpeg)
查看源码
![SparkSQL访问Hive遇到的问题及解决方法](https://s4.51cto.com/oss/201910/11/bd8ef7d84a85b6e5fe259c6978ae69e7.jpeg)
解决方法
将$HIVE_HOME/lib下的spark-hive_2.11-2.4.2.jar与spark-hive-thriftserver_2.11-2.4.2.jar添加到project中
继续报错
![SparkSQL访问Hive遇到的问题及解决方法](https://s1.51cto.com/oss/201910/11/46926fbfd09c96f382b04c2c26cbeb79.jpeg)
查看源码
![SparkSQL访问Hive遇到的问题及解决方法](https://s3.51cto.com/oss/201910/11/00b318ac4e35f919046c18835d8443b2.jpeg)
进入ConfVars
![SparkSQL访问Hive遇到的问题及解决方法](https://s1.51cto.com/oss/201910/11/72648bea52a029abe075485661954772.jpeg)
发现ConfVars中定义的变量并没有METASTORE_CLIENT_SOCKET_LIFETIME,而HiveConf.java来自于hive-exec-1.1.0-cdh5.7.0.jar,即证明hive1.1.0中并没有假如该参数。
解决方法
将hive依赖换为1.2.1
![SparkSQL访问Hive遇到的问题及解决方法](https://s1.51cto.com/oss/201910/11/8178d9d64b7f0a90e1dfc3631e61f1da.jpeg)
继续报错
![SparkSQL访问Hive遇到的问题及解决方法](https://s4.51cto.com/oss/201910/11/6ec2e5ba43a13266253de957d7623d08.jpeg)
解决方法
这是因为远端没有启动hive造成的,启动hive时需要配置metastore。