秋名山老司机从上车到翻车的悲痛经历,带你深刻了解什么是 Spark on Hive!| 原力计划...

作者 | Alice菌

责编 | 夕颜

出品 | CSDN博客

本篇博客将为大家分享的内容是如何实现Spark on Hive,即让Hive只作为存储角色,Spark负责sql解析优化,执行…话不多说,直接上车!

        

上车前需知

Spark on hive 与 hive on spark 的区别

1. Spark on hive

是spark 通过Spark-SQL使用hive 语句,操作hive ,底层运行的还是 spark rdd。

(1)就是通过sparksql,加载hive的配置文件,获取到hive的元数据信息

(2)spark sql获取到hive的元数据信息之后就可以拿到hive的所有表的数据

(3)接下来就可以通过spark sql来操作hive表中的数据

2.hive on spark

是把hive查询从mapreduce 的mr (Hadoop计算引擎)操作替换为spark rdd(spark 执行引擎) 操作. 相对于spark on hive,这个要实现起来则麻烦很多, 必须重新编译你的spark和导入jar包,不过目前大部分使用的是spark on hive。

上车

概述

最权威的解释请见Apache Spark官网,http://spark.apache.org/docs/latest/sql-data-sources-hive-tables.html

其中最关键的一句博主已经为大家提取出来了

Configuration of Hive is done by placing your hive-site.xml, core-site.xml (for security configuration), and hdfs-site.xml (for HDFS configuration) file in conf/.

到底是什么意思呢,这里先卖个关子,看到后面大伙就懂了。

  • Hive查询流程及原理

    • 执行HQL时,先到MySQL元数据库中查找描述信息,然后解析HQL并根据描述信息生成MR任务;

    • Hive将SQL转成MapReduce执行速度慢;

    • 使用SparkSQL整合Hive其实就是让SparkSQL去加载Hive 的元数据库,然后通过SparkSQL执行引擎去操作Hive表内的数据;

    首先需要开启Hive的元数据库服务,让SparkSQL能够加载元数据。

 

发车

一、Hive开启MetaStore服务

<1>修改 hive/conf/hive-site.xml 新增如下配置:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><property><name>hive.metastore.local</name><value>false</value></property><property><name>hive.metastore.uris</name><value>thrift://node01:9083</value></property></configuration>

<2>后台启动 Hive MetaStore服务

nohup /export/servers/hive/bin/hive --service metastore 2>&1 >> /var/log.log &

二、SparkSQL整合Hive MetaStore

Spark 有一个内置的 MateStore,使用 Derby 嵌入式数据库保存数据,但是这种方式不适合生产环境,因为这种模式同一时间只能有一个 SparkSession 使用,所以生产环境更推荐使用 Hive 的 MetaStore。

SparkSQL 整合 Hive 的 MetaStore 主要思路就是要通过配置能够访问它, 并且能够使用 HDFS 保存 WareHouse,所以可以直接拷贝 Hadoop 和 Hive 的配置文件到 Spark 的配置目录。

        hive-site.xml 元数据仓库的位置等信息

        core-site.xml 安全相关的配置

        hdfs-site.xml HDFS 相关的配置

        

我们进入到shell窗口,执行以下命令。

将hive目录下的hive-site.xml拷贝至spark安装目录下:

cp /export/servers/hive-1.1.0-cdh5.14.0/conf/hive-site.xml /export/servers/spark/conf

将hadoop安装目录下的core-site.xml和 hdfs-site.xml拷贝至spark安装目录下

cp /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/core-site.xml /export/servers/spark/conf
cp /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml /export/servers/spark/conf

提示:使用IDEA本地测试直接把以上配置文件放在resources目录即可。

飙车

先完成如下所示的代码,使用SparkSQL完成创建一个表,并将本地文件中的数据导入到表格中的操作。

使用SparkSQL操作Hive表:

import org.apache.spark.sql.SparkSessionobject HiveSupport {def main(args: Array[String]): Unit = {//创建sparkSessionval spark = SparkSession.builder().appName("HiveSupport").master("local[*]").config("spark.sql.warehouse.dir", "hdfs://node01:8020/user/hive/warehouse").config("hive.metastore.uris", "thrift://node01:9083").enableHiveSupport()//开启hive语法的支持.getOrCreate()// 设置日志级别spark.sparkContext.setLogLevel("WARN")//查看有哪些表spark.sql("show tables").show()//创建表spark.sql("CREATE TABLE person (id int, name string, age int) row format delimited fields terminated by ' '")//加载数据,数据为当前SparkDemo项目目录下的person.txt(和src平级)spark.sql("LOAD DATA LOCAL INPATH 'in/person.txt' INTO TABLE person")//查询数据spark.sql("select * from person ").show()spark.stop()}
}

在运行程序之前,先让我们进入到hive的shell窗口,查看一下当前默认数据库default有哪些表:

hive (default)> show tables;OK
tab_name
student
techer
techer2
Time taken: 0.738 seconds, Fetched: 3 row(s)
hive (default)>

然后右键运行,当IDEA控制台打印以下结果,说明我们的程序运行成功了。

再次进入到hive的shell窗口,查看当前表,此时已经发现了我们刚刚用SparkSQL所创建的表:

翻车

正当博主终于长舒了一口气,准备拿出82年珍藏的雷碧小酢一杯的时候,电脑可能是馋哭了,直接蓝屏警告。

好了,不说了,说多了都是泪,本次的分享就到这里,身为蒟蒻本蒻的我去抢救电脑了,或许喂Ta喝点也不至于罢工是吧 ̄へ ̄

版权声明:本文为CSDN博主「Alice菌」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_44318830/java/article/details/105471548

推荐阅读
  • 大数据Spark:利用电影观看记录数据,进行电影推荐| 原力计划

  • 我!程序猿!被银行套路了!

  • 数据科学产业中哪些架构最热门?本文为你盘点了 5 款!

  • 陆奇:疫情下的创业者,最不能缺这两大能力

  • 滴滴技术总监受贿 1000 万,列入招聘黑名单,互联网大厂反腐有多强?

  • 用 Python 训练自己的语音识别系统,这波操作稳了!

  • 区块链如何解决食品安全问题?

真香,朕在看了!

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

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

相关文章

从电商到软件市场,阿里双11战火蔓延

2019年“双十一”&#xff0c;是阿里天猫奋战的第11个年头&#xff0c;更是阿里在电商行业的一个重要的里程碑。今年&#xff0c;整个阿里系也在“一心一役”全面出击&#xff0c;作为阿里旗下的重要大将——阿里云也加入了这场购物狂欢&#xff0c;将火热的购物氛围从C端消费者…

RuoYi-Cloud 部署篇_01(linux环境 mysql+nginx版本)

文章目录一、基础准备1. 技术选型2. 源码克隆3. 安装依赖4. 将 RuoYi-Cloud 项目导入到 IDEA5. 安装启动Mysql6. 安装启动Redis7. 创建数据库&#xff0c;执行 SQL脚本文件二、安装与配置 nacos2.1. 下载nacos2.2. 安装 nacos2.3. nacos持久化配置2.4. 执行脚本文件2.5. nacos连…

SpringBoot集成Elasticsearch实现博客高亮搜索

文章目录效果展示二、使用步骤1.引入maven依赖2. 编写spplication.properties3.配置客户端4.高亮搜索5.转换成实体对象总结效果展示 虽然看起来巴适&#xff0c;但是挺简单的&#xff01; &#x1f4dd; 英文检索 &#x1f4dd; 中文单字检索 二、使用步骤 1.引入maven依赖…

淘系技术,实力为2019年双11而战!稳!

2019 天猫双 11 全球狂欢节96秒成交额破百亿&#xff0c;24小时总成交额2684亿&#xff0c;创造了交易创建峰值 54.4万笔&#xff0f;秒的历史记录。天猫双11&#xff0c;已经不仅是购物节&#xff0c;也是品牌成长节、消费者互动节。天猫双11更是是商业的奥林匹克。 今年&…

上班从不迟到,生病不敢请假,加班唯命是从,明明已经很拼命了,为什么还是缺钱?...

为了省几百块钱房租&#xff0c;每天在路上多花两三个小时&#xff1b;为了少花几毛钱&#xff0c;买包纸巾也要货比三家&#xff1b;被上司大声指责&#xff0c;为了保住饭碗&#xff0c;只能陪着笑脸......上班从不迟到&#xff0c;生病不敢请假&#xff0c;加班唯命是从&…

RuoYi-Cloud 部署篇_02(linux环境 mysql+nginx版本)

文章目录一、模块配置修改1. ruoyi-gateway-dev.yml2. ruoyi-auth-dev.yml3. ruoyi-system-dev.yml4. ruoyi-gen-dev.yml5. ruoyi-job-dev.yml6. ruoyi-file-dev.yml二、后端配置预启动2.1. 部署资料整合2.2. 模块端口划分2.3. 组件端口划分2.4. 服务脚本编写2.5. 前端编译生产…

Flink State 有可能代替数据库吗?

有状态的计算作为容错以及数据一致性的保证&#xff0c;是当今实时计算必不可少的特性之一&#xff0c;流行的实时计算引擎包括 Google Dataflow、Flink、Spark (Structure) Streaming、Kafka Streams 都分别提供对内置 State 的支持。State 的引入使得实时应用可以不依赖外部数…

简易投票系统数据库设计

介绍 简易版的投票系统数据库设计. 发现设计有误请在评论区指出&#xff0c;谢谢&#xff01; 一、截图 项目表 选项表 投票表 二、代码 票表 CREATE TABLE as_ticket (id varchar(64) NOT NULL COMMENT 主键,title varchar(100) DEFAULT NULL COMMENT 投票标题,descr…

万级规模 K8s 如何管理?蚂蚁双11核心技术公开

阿里妹导读&#xff1a;Kubernetes 大幅降低了容器化应用部署的门槛&#xff0c;并以其超前的设计理念和优秀的技术架构&#xff0c;在容器编排领域拔得头筹。越来越多的公司开始在生产环境部署实践。本文将分享蚂蚁金服是如何有效可靠地管理大规模 Kubernetes 集群的&#xff…

定了!2020年,6种将死的编程语言!

编程界语言排行榜又要面临一次全新的洗牌&#xff0c;六大编程语言将要黄了&#xff01;此消息一出&#xff0c;令众多程序员心碎&#xff01;那么这将“亡”的六大语言中有你所擅长的吗&#xff1f;Perl&#xff0c;Haskell&#xff0c;Ruby&#xff0c;Visual Basic.NET&…

RuoYi-Cloud 部署篇_03(linux环境 Mysql+nginx版本)

文章目录一、localhost无法路由1. nacos控制台2. sentinel控制台3. admin控制台二、思路分析2.1. 现象分析2.2. 原因分析2.3. 解决思路三、解决方案&#xff08;第一种&#xff09;3.1. 调整路由url3.2. 效果验证四、解决方案解决方案&#xff08;第二种&#xff09;4.1. 域名分…

论坛系统数据库设计

论坛系统数据库设计 文章目录论坛系统数据库设计前言一、社区论坛是什么&#xff1f;二、设计表1.用户表2.Token表3. 文章表4. 话题表5. 问题表6. 评论表7. 投票表8. 回答表9. 举报表10. 话题关系对应表11. 通知表12. 私信表13. 关注关系表14. 图片表15. 设置表16. 缓存表总结前…

阿里文娱首次公开!AI 如何对爆款内容未卜先知?

阿里妹导读&#xff1a;文娱内容很难有完整的量化指标体系&#xff0c;内容的复杂性决定了文娱产品的不确定性。我们如何利用AI大数据能力&#xff0c;建造文娱的内容认知大脑&#xff1f;串联内容全生命周期&#xff0c;实现对内容、流量、宣推等的“未卜先知”&#xff0c;提…

Sentinel 1.7.0 发布,支持 Envoy 集群流量控制

流控降级中间件 Sentinel 1.7.0 版本正式发布&#xff0c;引入了 Envoy 集群流量控制支持、properties 文件配置、Consul/Etcd/Spring Cloud Config 动态数据源适配等多项新特性与改进。详细特性列表请参考 Release Notes&#xff0c;欢迎大家使用并提出建议。 下面我们来一起…

RuoYi-Cloud 部署篇_02(windows环境 mysql版本)

文章目录一、模块配置修改1. ruoyi-gateway-dev.yml2. ruoyi-auth-dev.yml3. ruoyi-system-dev.yml4. ruoyi-gen-dev.yml5. ruoyi-job-dev.yml6. ruoyi-file-dev.yml二、后端配置预启动2.1. 配置 idea的 RunDashboard2.2. 运行后端三、部署前端3.1. 安装依赖3.2. 运行前端6.3. …

运维老哥必须知道的Linux系统文件目录组织结构

夫陶公清风千古&#xff0c;余又何人&#xff0c;敢称庶几 文章目录介绍Linux目录结构Linux文件和目录管理绝对路径和相对路径绝对路径相对路径yum包管理介绍 Linux目录结构 &#x1f4a1; Linux文件系统的目录结构为树状结构&#xff0c;其中根目录为一个斜杠&#xff1a;/…

云原生下日志方案的架构设计

上一篇中我们介绍了为什么需要一个日志系统、为什么云原生下的日志系统如此重要以及云原生下日志系统的建设难点&#xff0c;相信DevOps、SRE、运维等同学看了是深有体会的。本篇文章单刀直入&#xff0c;会直接跟大家分享一下如何在云原生的场景下搭建一个灵活、功能强大、可靠…

不知道路由器工作原理?没关系,来这看看!看不懂你捶我 | 原力计划

作者 | 北海以北没有小王头图 | CSDN付费下载自视觉中国来源 | CSDN博客路由器概述首先我们先大致了解一下路由器的大致结构以及工作方式。路由器体系结构路由器体系结构如下图&#xff1a;其中四个重要组成部分依次如下&#xff1a;1. 接入端口将一条输入的物理链路与路由器相…

RuoYi-Cloud 部署篇_03(windows环境 mysql版本)

文章目录一、软件启动1. redis2. nacos3. myqsl二、微服务启动2.1. 认证授权中心启动2.2. 若依网关启动2.3. 系统模块启动2.4. 定时任务模块启动2.5. 监控中心启动2.6. 代码生成模块启动2.7. 前端启动三、测试验证3.1. 系统模块3.2. 定时任务3.3. 代码生成3.4. sentinel控制台3…

闲鱼推荐,让智能计算从云走向端

关键词&#xff1a; 智能推荐、特征工程、特征处理。 术语解释&#xff1a; 机器学习&#xff08;Machine Learning&#xff09;&#xff1a;是关于在计算机上从数据中产生“模型”(model)的算法&#xff1b;数据集&#xff08;Data Set&#xff09;&#xff1a;一组记录的集…