SparkSQL与Hive整合(Spark On Hive)

news2024/9/24 3:28:57

1. Hive的元数据服务

hive metastore元数据服务用来存储元数据,所谓元数据,即hive中库、表、字段、字段所属表、表所属库、表的数据所在目录及数据分区信息。元数据默认存储在hive自带的Derby数据库。在内嵌模式和本地模式下,metastore嵌入在主hive server进程中。但在远程模式下,metastore 和 hive server是两个单独的服务,都由各自的进程管理

metastore服务独立出来之后,1个或多个客户端在配置文件中添加metastore的地址,就可以同时连接metastore服务,metastore再去连接MySQL数据库来存取元数据。

hiveserver服务主要目的 接收 SQL, 将SQL进行编译 优化 执行, 将SQL翻译为MR程序, 然后提交Yarn运行

BeeLine客户端向HiveServer服务提交SQL语句,HiveServer服务连接MetaStore获取元数据后,将SQL编译为MR程序执行
在这里插入图片描述
SparkSQL同样适用,SparkSQL语句提交给Spark集群,Spark执行引擎查询metastore服务获取元数据,将SparkSQL翻译为Spark RDD执行

一旦替换掉HiveServer2, 让Spark 和Hive的metastore进行集成, Spark的schema元数据信息就可以交给metastore统一管理

2.配置说明

2.1 spark添加metastore地址

spark/conf添加hive-site.xml,可以拷贝 hive/conf/hive-site.xml
主要添加配置:

<!-- 远程模式部署metastore metastore地址 -->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://node3:9083</value>
</property>

metastore服务 和 hiveserver2服务,我都启动在了node3机器,全部配置如下:

<configuration>
    <!-- 存储元数据mysql相关配置 -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://node3:3306/hive3?createDatabaseIfNotExist=true&amp;useSSL=false</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>123456</value>
    </property>

    <!-- H2S运行绑定host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>node3</value>
    </property>

    <!-- 远程模式部署metastore metastore地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node3:9083</value>
    </property>

    <!-- 关闭元数据存储授权  -->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
     </property>
</configuration>

2.2 MySQL驱动包

MySQL的连接的驱动jar包拷贝到本地spark的jars目录
cd /export/server/hive/lib/
cp mysql-connector-java-5.1.32.jar /export/server/spark/jars/
版本号5.1.32可适当替换

spark on yarn运行模式下:需要上传一份到HDFS
hadoop dfs -put mysql-connector-java-5.1.32.jar /spark/jars

2.3 启动 Hadoop集群 和 Hive的metastore的服务

start-all.sh
nohup /export/server/hive/bin/hive --service metastore 2>&1 &

2.4 测试

  • cd /export/server/spark/bin/
    ./spark-sql --master local[*]

  • ./hive

进入hive客户端, 然后在hive的客户端上, 创建库和表, 以及添加数据, 在spark-sql客户端上可以看到,。

同样,在spark-sql中创建库和表, 以及添加数据, 在hive的客户端也可以看到
说明SparkSQL和Hive集成成功

2.5 SparkSQL集成Hive在代码中实现

# 1.创建Spark SQL的核心对象: SparkSession
    # .enableHiveSupport() 开启和HIVE整合
    # spark.sql.shuffle.partitions 宽依赖运行并行度
    # hive.metastore.uris 元数据服务地址
    # spark.sql.warehouse.dir spark数据存储目录和Hive保持一致
    spark = SparkSession.builder \
        .appName('spark on hive') \
        .master('local[*]') \
        .config('spark.sql.shuffle.partitions', 4) \
        .config('hive.metastore.uris', 'thrift://node3.itcast.cn:9083') \
        .config('spark.sql.warehouse.dir', 'hdfs://node1:8020/user/hive/warehouse') \
        .enableHiveSupport() \
        .getOrCreate()

    # 2. 执行相关的操作
    spark.sql("select * from pyspark_hive.stu; ").show()

    # 3. 释放资源
    spark.stop()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装一个新虚拟环境——就叫它newtorch吧!

文章目录 1 新建一个虚拟环境newtorch2 安装pytorch1.7.1依赖包3 安装matplotlib2.2.34 安装torchsummary5 现在开始测试一下代码6 安装pandas 1 新建一个虚拟环境newtorch 打开anaconda prompt&#xff0c;输入&#xff1a; conda create -n newtorch python3.7.4// newtorc…

idea多模块测试——暂时不启动某个有问题的模块,之后再加载回来

文章目录 遇到问题解决方案暂时卸载然后还原 遇到问题 某个模块出了问题&#xff0c;运行不了项目 解决方案 暂时卸载 然后还原

云原生之深入解析Dapr安全性之访问控制策略

一、服务调用范围访问策略 ① 跨命名空间的服务调用 Dapr 通过服务调用 API 提供端到端的安全性&#xff0c;能够使用 Dapr 对应用程序进行身份验证并设置端点访问策略&#xff1a; Dapr 应用程序可以被限定在特定的命名空间&#xff0c;以实现部署和安全&#xff0c;当然仍然…

计算机基础知识学习笔记

目录 1.计算机奠基人—冯•诺依曼1.冯诺依曼结构2.冯诺依曼结构的特点 2.计算机的发展 感觉自己的计算机基础知识还很薄弱&#xff0c;工作之余补习一下。1.计算机奠基人—冯•诺依曼 1.冯诺依曼结构 冯诺依曼结构也称作普林斯顿结构&#xff0c;是一种将程序&#xff08;指令…

【C语言】大小端介绍以及判断大小端的两种方式

前言 &#x1f388;大家好&#xff0c;我是何小侠&#x1f388; &#x1f343;大家可以叫我小何或者小侠&#x1f343; &#x1f490;希望能通过写博客加深自己对于学习内容的理解&#x1f490; &#x1f338;也能帮助更多人理解和学习&#x1f338; 花繁柳密处&#xff0c;拨…

【探索 Kubernetes|作业管理篇 系列 16】离线业务 Job、CronJob

前言 大家好&#xff0c;我是秋意零。 在上一篇中&#xff0c;我们讲解了 DaemonSet 控制器&#xff0c;相信你以及理解了其的工作过程&#xff0c;分为三部。一是&#xff0c;获取所有 Node 节点中的 Pod&#xff1b;二是&#xff0c;判断是否有符合 DaemonSet 管理的 Pod&a…

osg实现镜面成像、倒影效果

目录 1. 需求提出 2. 代码实现 3. 功能讲解 3.1. 设置地面半透明 3.2. 设置镜面倒影成像 3.3. 设置地面颜色 3.4. 设置相机初始位置 4. 总结 1. 需求提出 平时的业务需求&#xff0c;有时需要实现镜面成像、倒影效果&#xff0c;如下&#xff1a…

79、基于STM32单片机DHT11温湿度无线蓝牙手机APP监控报警系统(程序+原理图+PCB图+设计资料+参考论文+开题报告+元器件清单等)

摘 要 温湿度控制已成为当今社会研究的热门项目。是工农业生产过程中必须考虑的因素。作为最常见的被控参数。温度和湿度已经不再是相互独立的物理量&#xff0c;而应在系统中综合考虑。广泛应用于实验室、大棚、花圃、粮仓乃至土壤等各个领域。而传统的温湿度控制则利用湿度…

Qt QLineEdit篇

QLineEdit篇 【1】QLineEdit简介【2】QLineEdit常用方法【3】QLineEdit使用举例UI设计界面效果头文件源文件 PC饱和了&#xff0c;跟我学Qt比较实在&#xff0c;哈哈哈 【1】QLineEdit简介 QLineEdit是Qt框架中的一个类&#xff0c;用于创建一个文本输入框&#xff0c;允许用…

【WSN定位】基于蜣螂优化算法DBO的Dvhop定位算法 不同锚节点比例和不同通信半径情况下对比【Matlab代码#45】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】1. Dvhop定位算法2. 蜣螂优化算法3. 部分代码展示4. 仿真结果展示5. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】 1. Dvhop定位算法 根据距离矢量和…

#systemverilog# 关于随机约束之 约束块

随机变量的值通过由约束块声明的约束表达式来确定。像任务、函数和变量一样,随机块是类的成员。在一个类中,约束块的名字必须是唯一的。 一 语法定义 声明约束块的语法如下: (1)constraint_identifier是约束块的名字。使用constraint_mode()(参见12.8节)方法,这个名字…

初步认识Java垃圾回收算法

GCRoot指被栈上直接或间接引用的对象&#xff0c;或被本地方法栈直接或间接引用的对象&#xff0c;或被方法区引用的对象。 被引用的对象是不能被删除的。 如果对象跟GCRoot并没有直接或间接相连的关系&#xff0c;那么这些对象就可以被删除了。 标记-清理&#xff1a;将需要删…

C++智能指针使用陷阱、shared_ptr实现

一 智能指针使用概述 1.使用场景 1.1 unique_ptr 1.1.1 概念 std::unique_ptr 是通过指针占有并管理另一对象&#xff0c;并在 unique_ptr 离开作用域时释放该对象的智能指针。 std::unique_ptr 常用于管理对象的生存期&#xff0c;包含&#xff1a; 通过正常退出和经由异…

SpringBoot 实现导出数据 - EasyExcel 导出数据

文章目录 1. EasyExcel 介绍2. 导出2.1 引入依赖2.2 构建测试实体类 3. 设置单元格大小 1. EasyExcel 介绍 EasyExcel 官网介绍 传统操作Excel大多都是利用 Apach POI 进行操作的&#xff0c;但是 POI 框架并不完善&#xff0c;使用过程非常繁琐且有较多的缺陷&#xff1a; 动态…

lesson11 Zigbee MAC地址通信

目录 Zigbee MAC地址通信 前言 查看MAC地址&#xff08;含组网过程抓包分析&#xff09; 方法1&#xff1a;通过dongle抓包查看MAC地址 方法2&#xff1a;仿真调试查看MAC 实验过程 实现步骤 实验效果 出错分析 最终现象 结果分析 Zigbee MAC地址通信 前言 1、Zig…

Python中类的变量,一个下划线与两个下划线的区别

形似 功能__xx这是私有变量&#xff0c; 只有内部可以访问&#xff0c;外部不可以访问。但是也不是一定不可以访问&#xff0c;只要以 _类名__xx样式就可以访问 。但最好不要这样做&#xff0c;养成良好编程习惯_x这是实例变量&#xff0c;可以访问&#xff0c;但是不要轻…

STM32MP157-正点原子第六章tf-a使用编译错误

原因&#xff1a;交叉编译工具链选择错误 亲测&#xff1a; gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz 和 gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf.tar.xz 可以成功编译 下载网址https://mirrors.tuna.tsinghua.edu.cn/armbian-relea…

全国各城市交通运输邮电业本地电话用户(1999-2020年)

本数据展示了全国各城市的本地电话用户数量。通过对这些数量的分析&#xff0c;可以了解全国各城市通信设施建设的发展情况、人口密度以及工业经济的发展程度等方面的信息。此数据不仅可供政府部门制定信息技术政策&#xff0c;还可以为企业投资提供重要参考。同时&#xff0c;…

Leetcode-每日一题【382.链表随机结点】

题目 给你一个单链表,随机选择链表的一个节点,并返回相应的节点值。每个节点被选中的概率一样 。 实现 Solution 类&#xff1a; Solution(ListNode head) 使用整数数组初始化对象。int getRandom() 从链表中随机选择一个节点并返回该节点的值。链表中所有节点被选中的概率相…

网络空间安全专业未来的发展前景以及薪资待遇如何?

不管是考虑未来报读专业的准大学生&#xff0c;还是初入职场的实习生&#xff0c;亦或是想要跳槽转岗的职场人&#xff0c;当我们开始选择一份工作时&#xff0c;本质上都在考虑以下三个问题&#xff1a; 这份工作的收入水平如何&#xff1b;这份工作有没有发展前景&#xff1…