Spark整合hive详细流程
注意点:
Spark是完全兼容hive的,若之前hive有⾃⼰的元数据库,则spark可以直接使⽤,若之前没有,则可以⽤spark创建hive元数据库元数据库保存的是许多描述信息,也就是数据库和表的各种信息,如数据存储信息、表结构信息等
原始数据保存在HDFS中
1.⾸先要到hive元数据库在什么位置
此时要导⼊⼀个配置⽂件,即将l导⼊到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 additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
mysql下载jar包WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and
limitations under the License.
-->
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://linux01:3306/hivedb?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value&sql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!-- 创建⼀个普通⽤户hive,密码是123456 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
<!-- 不校验元数据 -->
<property>
<name&astore.schema.verification</name>
<value>false</value>
</property>
<!-- 若元数据不存在,则⾃动⽣成 -->
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
</configuration>
2.创建⼀个普通⽤户
这⾥不使⽤root⽤户,因为root⽤户操作权限太⾼,实际开发中不太可能⽤到
⾸先要设定密码安全等级:
查看 mysql 初始的密码策略:SHOW VARIABLES LIKE 'validate_password%';
设置密码的验证强度等级:set global validate_password_policy=LOW;
设置密码长度:set global validate_password_length=6;
创建⽤户,并且授权任何主机都可访问db
创建⽤户:CREATE USER 'hive'@'%' IDENTIFIED BY '123456';
设置权限:GRANT ALL PRIVILEGES ON hivedb.* TO 'hive'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
刷新权限:FLUSH PRIVILEGES;
注意:上述标红的hive是新建的⽤户,标红的hivedb是元数据库名,与配置⽂件中指定的相同
3.上传mysql驱动
由于要读取mysql中元数据库的信息,因此需要⽤到mysql驱动,即jdbc,有如下两种⽅式使⽤jdbc:
将对应的驱动jar包放⼊到spark安装⽬录中的lib⽬录下
将驱动jar包放在任意⽬录下,使⽤ --driver-class-path jar包路径 使⽤该驱动
推荐使⽤第⼆种⽅式,不建议将很多jar包放到lib下
4.设置数据存储位置
若之前不存在hive元数据库,则需要让spark创建元数据库(配置⽂件中已经设置好)
spark创建元数据库有⼀个⼩问题,就是数据存储默认为本地
此时需要修改⽣成的元数据库中的DBS表中的数据存储路径(即DB_LOCATION_URL字段),改为⾃⼰的hdfs路径,如下:
hdfs://linux01:9000/user/hive/warehouse
5.启动SparkSQL
由于没有将mysql驱动jar包放在spark的lib路径下,因此要指定 --driver-class-path 参数
/opt/apps/spark-3.0.1-bin-hadoop3.2/bin/spark-sql --master spark://linux01:7077 --driver-class-path /root/mysql-connector-java-5.1.49.jar
6.启动HiveServer
启动hiveserver服务,就可以从外界进⾏连接,注意这⾥也要指定mysql驱动jar包
/opt/apps/spark-3.0.1-bin-hadoop3.2/sbin/start-thriftserver.sh --master spark://linux01:7077 --driver-class-path /root/mysql-connector-java-5.1.49.jar 这⾥不指定执⾏内存⼤⼩与核数
使⽤beeline进⾏连接:
/opt/apps/spark-3.0.1-bin-hadoop3.2/bin/beeline -u jdbc:hive2://linux01:10000
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论