美文网首页
Spark on Hive配置踩坑全纪录

Spark on Hive配置踩坑全纪录

作者: 湘港记者 | 来源:发表于2020-09-12 10:02 被阅读0次

Spark与Hive的分别安装与配置

可以参考Spark On Hive 部署和配置Hive安装配置指南(含Hive Metastore三种方式详解)这两篇文章,个人认为写的比较简练、清晰。尤其是第二篇,把三种Metastore都讲了。

首先,我们需要确保Spark和Hive已经安装并单独配置好。

Hive+MySQL的坑

安装完Hive和MySQL(现在已经被开源的MariaDB代替)后,如果MySQL中有历史数据,则无法完成Hive的初始化,因此我们在配置好数据库用户名密码后,需要清理其中的历史数据,将hive数据库清理掉(若数据库名为hive):

drop databases hive;

同时,若Hadoop中没有相应的目录/权限,也需要进行预处理:

hadoop fs -mkdir /user/hive
hadoop fs -mkdir /tmp
hadoop fs -chmod -R 777 /user/hive
hadoop fs -chmod -R 777 /tmp

随后再进行hive的初始化

schematool --dbType mysql --initSchema

Hive的测试验证

可以先使用Hive CLI进行表的创建和新增、查找数据,若均无问题,则说明Hive已经安装好。

连接Spark与Hive的坑

1. Hive配置与Spark配置

完成Hive配置后(包括metastore、connection方式等),要将hive-site.xml复制到Spark的conf下,包括服务器部署的程序和在客户端使用的程序,否则Spark将无法知道Hive配置,因此无法连接,如果之前有过数据则会使用缓存,给人一种能访问hive但是却又无法获得数据的假象。

2. mysql driver配置

因为Hive使用了MySQL作为metastore,但是Spark没有相应的driver访问SQL,需要将Hive下的connector driver复制到Spark的jar目录下,具体而言:

cp $HIVE_HOME/lib/mysql-connector-java-8.0.18.jar $SPARK_HOME/jar

同时将hive-site.xml中的connectionPoolingType从HikariCP更改为dbcp,否则会报错如下:

Caused by: org.datanucleus.exceptions.NucleusException: Attempt to invoke the "HikariCP" plugin to create a ConnectionPool gave an error : The connection pool plugin of type "HikariCP" was not found in the CLASSPATH!

相关文章

网友评论

      本文标题:Spark on Hive配置踩坑全纪录

      本文链接:https://www.haomeiwen.com/subject/iumiektx.html