Spark On Hive原理和配置

目录

一、Spark On Hive原理

        (1)为什么要让Spark On Hive?

二、MySQL安装配置(root用户)

        (1)安装MySQL

        (2)启动MySQL设置开机启动

        (3)修改MySQL密码

三、Hive安装配置

        (1)修改Hadoop的core-site.xml

        (2)创建hive-site.xml

        (3)修改配置文件hive-env.sh

        (4)上传mysql连接驱动

        (5)初始化元数据 (Hadoop集群启动后)      

        (6)创建logs目录,启动元数据服务

        (7)启动Hive shell

四、Spark On Hive配置

        (1)创建hive-site.xml(spark/conf目录)

        (2)放置MySQL驱动包

        (3)查看hive的hive-site.xml配置

        (4)启动hive的MetaStore服务

        (5)Spark On Hive测试

        (6)Pycharm-spark代码连接测试


一、Spark On Hive原理

        (1)为什么要让Spark On Hive?

        对于Spark来说,自身是一个执行引擎。但是Spark自己没有元数据管理功能,当我们执行: SELECT * FROM person WHERE age > 10的时候, Spark完全有能力将SQL变成RDD提交。

        但是问题是,Person的数据在哪? Person有哪些字段?字段啥类型? Spark完全不知道了。不知道这些东西,如何翻译RDD运行。在SparkSQL代码中可以写SQL那是因为,表是来自DataFrame注册的。 DataFrame中有数据,有字段,有类型,足够Spark用来翻译RDD用.。如果以不写代码的角度来看,SELECT * FROM person WHERE age > 10 spark无法翻译,因为没有元数据。

        解决方案:

        Spark提高执行引擎能力,Hive的MetaStore提供元数据管理功能。选择Hive的原因是使用Hive的用户数量多。

Hive与SparkOnHive流程示意图

二、MySQL安装配置(root用户)

        (1)安装MySQL

        命令:

        rpm  --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

        rpm -Uvh https://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm

        yum -y install mysql-community-server

        (2)启动MySQL设置开机启动

        命令:

        systemctl start mysqld

        systemctl enable mysqld

        (3)修改MySQL密码

        命令:

        查看密码:grep 'temporary password' /var/log/mysqld.log

        修改密码:

mysql -uroot -p  #登录MySQL,密码是刚刚查看的临时密码set global validate_password_policy=LOW;   #密码安全级别低set  global  validate_password_length=4;  #密码长度最低四位ALTER USER 'root'@'localhost' IDENTIFIED BY '密码'; # 设置用户和密码
# 配置远程登陆用户以及密码
grant all privileges on *.* to root@"%" identified by 'root' with grant option;flush privileges;

三、Hive安装配置

        (1)修改Hadoop的core-site.xml

        添加内容如下:

     <property>
            <name>hadoop.proxyuser.noregrets.hosts</name>
            <value>*</value>
    </property>
    <property>
            <name>hadoop.proxyuser.noregrets.groups</name>
            <value>*</value>
    </property>

        上传解压安装Hive压缩包并构建软连接
        命令:

        解压:tar -zvxf apache-hive-3.1.3-bin-tar-gz -C /export/servers

        构建软连接:ln -s /export/servers/apache-hive-3.1.3-bin/ /export/servers/hive

        (2)创建hive-site.xml

        命令:

        cd /export/servers/hive/conf

        vim hive-site.xml

        添加内容如下:

<configuration>

        <!-- 存储元数据mysql相关配置 -->

        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://pyspark01:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>

        </property>

        <property>

                <name>javax.jdo.option.ConnectionDriverName</name>

                <value>com.mysql.jdbc.Driver</value>

        </property>

        <property>

                <name>javax.jdo.option.ConnectionUserName</name>

                <value>root</value>

        </property>

        <property>

                <name>javax.jdo.option.ConnectionPassword</name>

                <value>root</value>

        </property>

        <!-- H2S运行绑定host -->

        <property>

                <name>hive.server2.thrift.bind.host</name>

                <value>pyspark01</value>

        </property>

        <!-- 远程模式部署metastore metastore地址 -->

        <property>

                <name>hive.metastore.uris</name>

                <value>thrift://pyspark01:9083</value>

        </property>

        <!-- 关闭元数据存储授权 -->

        <property>

                <name>hive.metastore.event.db.notification.api.auth</name>

                <value>false</value>

        </property>

</configuration>

        (3)修改配置文件hive-env.sh

        命令:

        cd /export/servers/hive/conf

        cp hive-env.sh.template hive-env.sh

        vim hive-env.sh(修改第48行内容)

        内容如下:

        export HADOOP_HOME=/export/servers/hadoop
        export HIVE_CONF_DIR=/export/servers/hive/conf
        export HIVE_AUX_JARS_PATH=/export/servers/hive/lib

        (4)上传mysql连接驱动

链接:https://pan.baidu.com/s/1MJ9QBsE3h1FAxuB3a4iyVw?pwd=1111 
提取码:1111 

        MySQL5使用5的连接版本,MySQL8使用8的连接版本。

        (5)初始化元数据 (Hadoop集群启动后)      

        命令:

        登录数据库:

        mysql -uroot -p

        CREATE DATABASE hive CHARSET UTF8;        #建表

        cd /export/server/hive/

        bin/schematool -initSchema -dbType mysql -verbos

        #初始化成功会在mysql中创建74张表

        (6)创建logs目录,启动元数据服务

        命令:

        创建文件夹:mkdir logs

        启动元数据服务:nohup bin/hive --service metastore >> logs/metastore.log 2>&1 &

        (7)启动Hive shell

        命令:bin/hive(配置环境变量可直接使用hive)

四、Spark On Hive配置

        (1)创建hive-site.xml(spark/conf目录)

        添加内容如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--告知Spark创建表存到哪里-->
        <property>
                <name>hive.metastore.warehouse.dir</name>
                <value>/user/hive/warehouse</value>
        </property>
        <property>
                <name>hive.metastore.local</name>
                <value>false</value>
        </property>
<!--告知Spark Hive的MetaStore在哪-->
        <property>
                <name>hive.metastore.uris</name>
                <value>thrift://pyspark01:9083</value>
        </property>
</configuration>

        (2)放置MySQL驱动包

        (3)查看hive的hive-site.xml配置

        确保有如下配置:

        (4)启动hive的MetaStore服务

        命令:

        nohup bin/hive --service metastore >> logs/metastore.log 2>&1 &

        (5)Spark On Hive测试

        ①创建表sparkonhive

        命令:

        在spark目录下:

        bin/spark         

        spark.sql('create table sparkonhive(id int)' )

        ②进入查看查看

        命令:

        hive目录:

        bin/hive(配置过环境变量可直接使用hive)

        (6)Pycharm-spark代码连接测试

        在Linux的sparkSQl终端或者hive终端创建学生表,然后使用spark代码查询。

        命令:

        create table student(id int, name string);

        insert into student values(1,'张三'),(2, '李四');

        使用spark代码查询

        在Spark代码中加上如下内容

# cording:utf8
import string
from pyspark.sql import SparkSession
import pyspark.sql.functions as F
from pyspark.sql.types import IntegerType, StringType, StructType, ArrayType
if __name__ == '__main__':spark = SparkSession.builder.\appName('udf_define').\master('local[*]').\config('spark.sql.shuffle.partitions', 2).\config('spark.sql.warehouse.dir', 'hdfs://pyspark01:8020/user/hive/warehouse').\config('hive.metastore.uris', 'thrift://pyspark01:9083').\enableHiveSupport().\getOrCreate()sc = spark.sparkContextspark.sql('''SELECT * FROM student''').show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/154715.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络-应用层(2)

一、DHCP 当需要跨越多个网段提供DHCP 服务时必须使用DHCP 中继代理&#xff0c; 就是在DHCP 客户和服务器之间转发DHCP 消息的主机或路由器。 DHCP 服务端使用UDP 的67号端口来监听和接收客户请求消息&#xff0c; 保留UDP 的68号端口用于接收来自DHCP 服务器的消息回复。 在…

Qt显示中文

中文&#xff1a; unicode&#xff1a;\u4e2d\u6587 utf8&#xff1a;0xE4,0xB8,0xAD,0xE6,0x96,0x87 str 是UI上直接写中文&#xff0c;在这里获取得出的是unicode&#xff1b; str1是得到unicode&#xff0c;相当于fromUtf8() 是将utf8转成unicode&#xff1b; str2是得到…

谈API接入必须了解的各大API调用电商API应用场景

哪些业务场景可以使用API接口&#xff1f; &#xff08;1&#xff09;爬虫业务&#xff1a;在爬虫业务中&#xff0c;使用API接口可以帮助解决IP限制、反爬虫策略等问题&#xff0c;提高爬取数据的效率和稳定性。 &#xff08;2&#xff09;网络安全&#xff1a;在网络安全领…

【用Percona Toolkit给mysql大表在不锁表的情况下建索引】

用Percona Toolkit给mysql大表在不锁表的情况下建索引 安装Percona Toolkit建立索引 安装Percona Toolkit 共分为两步骤&#xff1a; 配置仓库 安装文档1 安装 安装文档2 建立索引 由于mysql8默认使用的是caching_sha2_password&#xff0c;认证方式&#xff0c;而Percona…

图像处理与计算机视觉--神经网络--手动计算

文章目录 1.简单感知器分类模型1.1.简单感知器分类模型介绍1.2.简单感知器分类模型实现 2线性神经元分类模型2.1.线性神经元分类模型介绍2.2.线性神经元分类模型实现 3.基于遍历学习的神经网络计算模型3.1.基于遍历学习的神经网络计算模型介绍3.2.基于遍历学习的神经网络计算模…

代码随想录算法训练营第三十九天丨 动态规划part02

62.不同路径 思路 动态规划 机器人从(0 , 0) 位置出发&#xff0c;到(m - 1, n - 1)终点。 按照动规五部曲来分析&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j] &#xff1a;表示从&#xff08;0 &#xff0c;0&#xff09;出发&#…

Redux中的异步操作如何处理

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

通用管理后台项目笔记 - Vue3+Vite安装环境、封装路由

概述 从0打造通用的后台管理系统&#xff0c;系列的第一篇博客&#xff0c;开发环境NodeYarnVite的开发环境&#xff0c;这是记录的学习笔记。 Node环境 本地使用的是Node v18.18.2&#xff0c;npm v9.8.1,安装脚手架工具&#xff0c;npm、cnpm、yarn3种方式&#xff0c;如果…

吉他、班卓琴和贝斯吉他降分器:Arobas Music Guitar 8.1.1

Arobas Music Guitar 是一款专业的吉他、班卓琴和贝斯吉他降分器。在熟练的手中&#xff0c;它不仅可以让您创作&#xff0c;还可以编辑、聆听和录制&#xff0c;以及导入和导出乐谱。如果有人感兴趣的话&#xff0c;录音是在八个轨道上进行的&#xff0c;你可以为每个轨道单独…

SurfaceFliger与Vsync信号如何建立链接?

Vsync信号上报流程 Vsync的注册函数&#xff0c;来临时会回调HWComposer的hook_VSYNC方法&#xff0c;接着调用到vsync方法中 大致流程梳理&#xff1a; 该方法会通知给SurfaceFliger的onVsyncReceived方法&#xff0c;接着调用DispSync的addResyncSample方法。 DispSyncThr…

钢带EPC纠偏比例伺服液压站比例伺服阀控制器

钢带EPC纠偏比例伺服液压站是一种专门用于卷取机的自动化设备&#xff0c;主要目标是确保钢带的一侧边缘保持平直&#xff0c;从而避免在后续运输和处理过程中损坏带钢的边缘。这种系统主要应用于钢铁、橡胶、造纸等行业的非透明带材连续生产线上。 该系统主要由液压源、电液伺…

RK3568-clock

pll锁相环 总线 gating rk3568.dtsi pmucru: clock-controller@fdd00000 {compatible = "rockchip,rk3568-pmucru";reg = <0x0 0xfdd00000 0x0 0x1000>;rockchip,grf = <&grf>;rockchip,pmugrf = <&pmugrf>;#clock-cells = <1>;#re…