加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

大数据开发之路:hive篇,你看了吗?

发布时间:2019-05-17 06:36:59 所属栏目:教程 来源:金灿灿
导读:引语 大数据开拓之路漫漫其修远兮,吾将上下而求索。许多入门大数据的小搭档,也许第一个打仗到的,就是一只可爱的小象,也就是我们的大数据规模的数据客栈器材hive。 这只小象给我们提供了利便类SQL查询说话HQL来哄骗数据,使得我们一开始不消编写伟大的
副问题[/!--empirenews.page--]

引语

大数据开拓之路漫漫其修远兮,吾将上下而求索。许多入门大数据的小搭档,也许第一个打仗到的,就是一只可爱的“小象”,也就是我们的大数据规模的数据客栈器材hive。

这只小象给我们提供了利便类SQL查询说话HQL来哄骗数据,使得我们一开始不消编写伟大的代码,就可以轻松的试探数据。Hive对付认识传统数据库的同窗来说,算是很友爱的一个入门器材。

道理

在大数据生态中,hive一样平常作为数据客栈来行使。什么是数据客栈呢? 简朴来说就像一个大粮仓,里边堆着各类百般的粮食,好比小麦、玉米、土豆、大米等等。数据客栈里是一个数据荟萃体,把差异数据源凭证必然的情势荟萃同一路来。 Hive自己是不做数据存储的,它是构建在漫衍式存储体系HDFS之上,我们泛泛看到的表数据其收??上来嗣魅照旧HDFS的文件。 Hive把这些HDFS数据文件,通过元数据法则映射为数据库的表,而且可以提供SQL操纵的成果。 Hive总体布局较量简朴,下方是整体的hive架构图,我们可以看到,总体有三个组件:用户接口、元数据体系、驱动器。

大数据开拓之路:hive篇,你看了吗?

用户通过用户接口来输入操纵指令。一样平常接口有三种情势:

  • CLI端:一样平常在linux处事器直接输入hive即可进入;
  • WEB模式:通过呼吁bin/hive --service hwi启动,默认会见9999端口;
  • 长途模式:一样平常是JDBC之类的编程接口;

Hive的焦点在于驱动器,一样平常驱动器吸取到用户接口转达的一条SQL之后,会举办下面的一系列操纵:

  • 驱动器开始举办语法和语义说明
  • 天生逻辑打算而且逻辑优化
  • 天生物理打算
  • 发送打算到执行引擎(常用引擎有mapredue和sprk)执行

功效返回

而元数据系同一样平常传统数据库来承载,首要记录了包罗hive表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据地址目次等。

常用hive语法

相识了hive的基本道理之后呢,我们这里团结事变中一些需求,来先容下开拓同窗常用的hive操纵。

分组统计

作为一名SQL仔,常常会要去统计一些奇稀疏怪的指标,好比差异年数段的UV,下单数的小时漫衍之类的。一样平常常用的分组就是group by了,然后共同上一些窗口函数, SUM、AVG、MIN、MAX、COUNT等,就可以实现我们许多统计需求了。好比下边的统计时刻段的独立用户数,查询功效如下图所示:

大数据开拓之路:hive篇,你看了吗?

关联查询

偶然辰我们查询的数据存放在差异的表中,那关联查询就派上用场了。所谓关联查询,一样平常就是通过两张表沟通的字段值关联起来,同时查询两张表的记录。Hive中常用关联分表里关联。

我们先成立两张简朴的表tab_a和tab_b,用实例来声名关联机制。表布局和表数据如下图所示:

大数据开拓之路:hive篇,你看了吗?

内关联一样平常行使 要害字Join或inner join ,内关联只返回关联上的功效。

外关联的情势就较量多样化了,又分为:

  • 左外关联:要害字为left [outer] join,早年边的表为主表,返回记录数和主表记录同等,关联不上的字段为null;
  • 右外关联:要害字为right [outer] join,和左外关联相反,则是往后边的表为主表。
  • 全外关联:full [outer] join,返回两个表的去重之和,关联不上的字段为null。

队列转换

偶然辰我们会碰着这样的需求,必要把多列的数据平铺到一行上输出。好比查询用户的会见轨迹,这时辰有两个函数就起上浸染了。照旧让我们先来看看结果。

大数据开拓之路:hive篇,你看了吗?

这两个sql的浸染都是把每个用户的点击轨迹拼接暂展示出来,个中collect_set和collect_set可以或许把列数据归并,转为一行。而两个的独一区别就是collect_set会举办去重。

上述讲的是行转列,尚有些需求,但愿我们能把列数据拆分成多行,好比数据布局如下,

Page_id StringAd_id Array

  • A[1,2,3]
  • B[3,5,6]
  • C[2,4,5]

要统计每个告白在全部页面呈现的次数,这时辰,我们可以先把统一列的数据线拆成多行,hive提供了explode睁开函数,详细结果如下图:

大数据开拓之路:hive篇,你看了吗?

Explode一样平常共同lateral view行使,把字段内容放开成假造视图。接下来我们再这个基本之上,就可以行使统计函数来举办说明。

大数据开拓之路:hive篇,你看了吗?

取TopN记录

给数据分组排序再取前几笔记录,也是我们较为常见的需求。hive提供了row_number函数,可以对排序值举办编号。举个栗子,要取省份的温度最高的都市,数据如下:

  • 省份都市温度
  • 广东佛山34
  • 广东广州30
  • 江西赣州31
  • 江西南昌28
  • 江西萍乡29
  • 湖南长沙26
  • 湖南衡阳25

我们可以行使row_number()组合group by的情势,来举办组内排序,而且返回次序值rank。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读