概述
一、在Spark的安装包下的conf下创建一个文件 hive-site.xml,不需要更新到其他的节点,只需要在客户端有一份hive-site.xml就可以
javax.jdo.option.ConnectionURL
jdbc:mysql://node1:3306/hive?createDatabaseIfNotExist=true
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassword
123456
二、开启Hive的metaStore服务
hive --service metastore & #后台启动
三、启动spark-shell时指定mysql连接驱动位置
/usr/local/spark/bin/spark-shell
--master spark://node1:7077
--executor-memory 512m
--total-executor-cores 1
--driver-class-path /usr/local/hive/lib/mysql-connector-java-5.1.32-bin.jar
四、
import org.apache.spark.sql.hive.HiveContext
val hc = new HiveContext(sc)
hc.sql("show databases").show
五、整合可能遇到的问题
1、问题一:
Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
解决方法:
需要格式化mysql元数据库:
schematool -dbType mysql -initSchema
2、问题二:
java.sql.SQLException: Column name pattern can not be NULL or empty
解决方法:
将 $HIVE_HOME/lib 下 的 mysql-connector-java-6.0.3.jar 替换成 mysql-connector-java-5.1.39.jar。
原因分析:mysql-connector-java 6.x 版本 和 5.1.x 版本不兼容 , nullNamePatternMatchesAll 连接属性的默认值在 mysql-connector-java 5.1 和 6.0 之间发生了改变. 在 5.1 版本中默认值是 true, 而 6.0 版本中默认值是 false。
3、问题三:
2019-07-06T10:01:53,737 ERROR [370c0a81-c922-4c61-8315-264c39b372c3 main] metastore.RetryingHMSHandler: MetaException(message:Hive Schema version 3.1.0 does not match metastore's schema version 1.2.0 Metastore is not upgraded or corrupt)
at org.apache.hadoop.hive.metastore.ObjectStore.checkSchema(ObjectStore.java:9063)
at org.apache.hadoop.hive.metastore.ObjectStore.verifySchema(ObjectStore.java:9027)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
这是因为在创建SQLContext实例的时候,要求spark编译的Hive版本和HiveMetaStore里面记录的Hive版本一致
3.1、解决方法一
我们可以通过$HIVE_CONF/confi/hive-site.xml 配置hive.metastore.schema.verification参数来取消这种验证,这个参数的默认值是true,我们可以取消验证,设置为false
hive.metastore.schema.verification
false
3.2、解决方法2
直接修改存储hive元数据的VERSION表
SELECT * FROM VERSION;
UPDATE VERSION SET SCHEMA_VERSION='3.1.0' WHERE VER_ID = 1;
image.png
最后
以上就是幽默唇彩为你收集整理的spark mysql hive_sparkSql和hive的整合(spark on hive)的全部内容,希望文章能够帮你解决spark mysql hive_sparkSql和hive的整合(spark on hive)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复