一、Spark整合Hive:
①SparkSQL兼容Hive的源数据库、兼容Hive的自定义函数、兼容Hive的序列化和反序列化。
②可以用SparkSQL替代Hive或者将Hive的引擎由MapReduce换成SparkSQL。
③启动SparkSQL必须是client模式,不能是cluster模式;
启动SparkSQL时可以指定启动模式,错误示例如下:
bin/spark-sql --deploy-mode cluster --master spark://linux02:7077 --driver-class-path /jars/mysql-connector-java-5.1.49.jar
上面这么些会报错,如下:
Cluster deploy mode is not applicable to Spark SQL shell.
整合步骤如下:
1.安装MySQL并创建一个普通用户,并且授权:
(1)CREATE USER ‘hive’@’%’ IDENTIFIED BY ‘123456’;
注:
①%代表可以在任意ip地址访问,如果需要设置网段,%的位置换成192.168.xxx的样式即可。
②’hive’代表用户名是hive,也可以是任意名称(做到见名知意)
注意:
直接写会报下面的错误:(密码太简单)
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
(2)修改Mysql的密码安全级别和长度(生产环境不用修改):
set global validate_password_policy=LOW;
set global validate_password_length=6;
(3)指定用户spark对hivedb下的表有操作权限(对其他database没有权限)
GRANT ALL PRIVILEGES ON hivedb.* TO 'hive'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
2.添加hive-site.xml配置文件
注:配置文件放在spark安装目录下的conf文件夹中。
配置文件如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for<