Spark on Hive配置踩坑全纪录

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!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。