sparkwithhive读写hive数据库某种报错解决

在大数据技术中,Hive 擅长元数据管理,而 Spark 的专长是高效的分布式计算,二者的结合将呈现’1+1>2’的效果。当Spark 把Hive 当成是一种元信息的管理工具,需要配置"spark with hive"。
本人配置完后在用spark连接hive读写数据时,出现了以下两种错误:

 1.Caused by: java.sql.SQLException: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true, username = hive. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
2.Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

经过不断试错找到了解决方法:
对于第一种错误:
1.要保证sparkwithhive/conf下有拷贝了hive/conf下的 hive-site.xml
2.查看你的hive元数据库名称 ,与hive-site.xml中localhost:3306/hive 中的hive对应,是用来保存hive元数据的
3.将数据库的所有表的所有权限赋给hive用户
在mysql下输入以下命令:

mysql> grant all on *.* to hive@localhost identified by 'hive';

命令的 hive@localhost 与密码’hive’ 对应你hive-site.xml的配置,参考下图红色画线sparkwithhive读写hive数据库某种报错解决_第1张图片
然后刷新mysql系统权限关系表:

mysql> flush privileges;

至于问题2,只需在hive-site.xml中加上 '&useSSL=false"就行,如上图绿色画线部分
至此问题1,2解决,可正常读取hive表

演示:
按顺序启动 mysql -> hadoop -> hive
然后启动支持hive的spark-shell
spark读hive中表数据:
在这里插入图片描述sparkwithhive读写hive数据库某种报错解决_第2张图片

写入数据:
在这里插入图片描述
sparkwithhive读写hive数据库某种报错解决_第3张图片

你可能感兴趣的:(spark,hive)