Hive--HiveQL:查询

Hive零基础从入门到实战 入门篇(十八) HiveQL:子查询与WITH AS 语句 目录 前言 1. 子查询 1.1 在FROM后使用子查询语法 1.1.1语法 1.1.2 举例 1.2 在WHERE后使用子查询 1.2.1 语法 1.2.2 举例 2.WITH AS语句 2.1 语法 2.2 举例 前言 本文主要介绍Hive中子查询与WITH AS 语句的用法,为后续多表查询的介绍奠定基础。 1. 子查询 1.1 在FROM后... 阅读详情

4 查询

4.1 select...from语句

4.1.1 基本操作

    select是SQL的射影算子,from子句标识了从哪个表、视图或嵌套查询中选择记录。回顾之前创建的employees表:

hive (mydb)> create table employees (
           > name string,
           > salary float,
           > subordinates array<string>,
           > deductions map<string,float>,
           > address struct<street:string, city:string, state:string, zip:int>)
           > partitioned by (country string, state string)
           > row format delimited
           > fields terminated by '\t'
           > collection items terminated by ','
           > map keys terminated by ':';

     装载数据:


hive (mydb)> load data local inpath '${env:HOME}/employees.txt' overwrite into
           > table employees
           > partition (country='US', state='IL');

执行select语句:

hive (mydb)> select name, salary from employees;



hive (mydb)> select name, subordinates from employees;



hive (mydb)> select name, deductions from employees;



hive (mydb)> select name, address from employees;


那么如何引用集合数据类型中的元素呢?

1 引用array中的元素

数组索引是基于0的,所以查询subordinates数组中的第一个元素用subordinates[0];


hive (mydb)> select name, subordinates[0] from employees;

注意:引用一个不存在的元素会返回NULL。

2 引用map中的元素

引用map中的元素时,可以使用类似于引用数组中元素的做法,但是使用的是键值而不是整数索引。


hive (mydb)> select name, deductions["State Taxes"] from employees;


3 引用struct中的元素

引用struct中的元素时,可以通过“点”符号。


hive (mydb)> select name, address.city from employees;


4.1.2 使用正则表达式来指定列

使用正则表达式可以指定我们想要的列,例如,在employees表中,指定所有以s开头的列:


hive (mydb)> select `s.*` from employees;


4.1.3 使用列值进行计算

    可以使用算数表达式和函数调用来操作列值。可以通过select语句查询得到大写的雇员姓名,雇员对应薪水需要交纳的联邦税收比例以及扣除税收后再进行取整所得的税后薪水。


hive (mydb)> select upper(name), salary, deductions["Federal Taxes"],         
           > round(salary*(1-deductions["Federal Taxes"])) from employees; 



1.算术运算符

    Hive支持所有典型的算术运算符。


    算术运算符可以接受所有的数值类型,如果数据类型不一样,那么两种类型中值范围较小的那个数据类型将转换为其他范围更广的数据类型。


2 函数

1)数学函数

    数学函数可以处理单个列的数据。

2)聚合函数

    聚合函数可以处理多个列的数据,然后返回一个结果值。以count和avg为例,函数count可以计算有多少行数据(或者某列有多少值),而函数avg可以计算指定列的平均值。


hive (mydb)> select count(*), avg(salary) from employees;

    常用的聚合函数:


3)表生成函数

    表生成函数可以将单列扩展成多列或者多行。以explode(ARRAY array)为例,返回0到多行结果,每行都对应输入的array数组的一个元素。

hive (mydb)> select explode(subordinates) from employees;



4.1.4 limit语句

    limit语句会限制返回的行数。


hive (mydb)> select upper(name) from employees limit 2;


4.1.5 列别名

    前面的查询语句可以认为是返回一个由新列组成的新的关系,有时候需要给这些新列起个名称,也就是说别名。

hive (mydb)> select upper(name), salary, deductions["Federal Taxes"] as fed_taxes,
           > round(salary*(1-deductions["Federal Taxes"])) as salary_minus_fed_taxes
           > from employees limit 2;



4.1.6 嵌套select语句

4.1.7 case...when...then句式

    case...when...then语句和if条件语句类似,用于处理单个列的查询结果。

hive (mydb)> select name, salary,                                 
           > case                                                 
           >  when salary<50000.0 then 'low'                      
           >  when salary>=50000.0 and salary<70000.0 then 'middle'
           >  when salary>=70000.0 then 'high'                     
           >  else 'very high'                                     
           > end as bracket from employees;


4.2 where语句

    select用于选取字段,where语句用于过滤条件。

    修改之前的对的对于联邦税收的查询,保留减去联邦税后工资大于70000的查询结果。


hive (mydb)> select e.* from                                                        
           > (select upper(name), salary, deductions["Federal Taxes"] as fed_taxes, 
           > round(salary*(1-deductions["Federal Taxes"])) as salary_minus_fed_taxes
           > from employees) e                                                      
           > where round(e.salary_minus_fed_taxes)>70000;


4.2.1  谓语操作符

     谓语操作符可用于where、join...on和having语句中。


4.2.2  关于浮点数的比较

    先看一个SQL语句


hive (mydb)> select name, salary, deductions['Federal Taxes']                     
           > from employees where deductions['Federal Taxes']>0.15; 

   

    为什么deductions['Federal Taxes']=0.15的记录也被输出了呢?由于Hive中,数字0.15不能使用float或double进行精确的表示,在这个例子中,0.15的最近似精确值应略大于0.15。为了简化一点,我们可以认为0.15对于float类型是0.15000001,对于double类型是0.1500000000001。我们定义deductions这个map的值的类型是float类型的,这意味着Hive会将该值转成double类型后再比较,当表中deductions的float类型的值转成double类型时,其产生的结果是
0.15000001,比实际的0.1500000000001值大。

    解决办法:将0.15转换成float类型。

hive (mydb)> select name, salary, deductions['Federal Taxes']                     
           > from employees where deductions['Federal Taxes']>cast(0.15 as float);


4.3 group by语句

    group by语句通常会和聚合函数一起使用,按照一个或多个列对结果进行分组,然后对每个组执行聚合操作。

例如:

select col1[,col2],count(1)

from table

where condition

group by col1[,col2]

[having];

注意:select后面的非聚合列必须出现在group by中

4.4 join语句

    Hive支持SQL JOIN语句,但是只支持等值连接。

    首先查看下z0、z1和z2各个表中的内容:



inner join

    只有进行连接的两个表中都存在与连接标准相匹配的数据才会保留下来。

hive (mydb)> select * from z0 join z1 on z0.uid=z1.uid;

on子句指定了两表进行相连的条件

    Hive不支持对连接关键字进行非等值的操作。例如:


hive (mydb)> select * from z0 join z1 on z0.uid<>z1.uid;

left outer join

     左外连接通过关键字left outer进行标记

hive (mydb)> select * from z0 left outer join z1 on z0.uid=z1.uid;


    在这种join操作中,join操作符左边表中的所有满足查询条件的列都会被返回,右边表中如果没有符合on子句代表的连接条件的记录时,那么从右边表指定选择的列的值都是NULL。


right outer join

    右外连接会返回右边表中所有满足查询条件的列,左边表中匹配不上的字段值用NULL替代。


hive (mydb)> select * from z0 right outer join z1 on z0.uid=z1.uid;


full outer join

    完全外链接会返回左右两边表中的所有满足查询条件的记录,如果任一表中的指定字段没有符合条件的值的话,就是用NULL替代。


hive (mydb)> select * from z0 full outer join z1 on z0.uid=z1.uid;


left semi join

    左半开连接会返回左边表的记录,前提是其记录对于右边表满足on子句中的判定条件

hive (mydb)> select * from z0 left semi join z1 on z0.uid=z1.uid;

    join的小结:

   1)hive中join支持多表连接(2个或2个以上),例如:

SELECT a.val,b.val, c.val FROM a JOIN b ON (a.key =b.key1) JOIN c ON (c.key = b.key2)

    如果join中多个表的join key 是同一个,则 join 会被转化为单个map/reduce 任务,例如:

hive (mydb)> SELECT a.val,b.val, c.val FROM a JOIN b
           > ON (a.key =b.key1) JOIN c
           > ON (c.key =b.key1);

    这个SQL语句被转化为单个 map/reduce 任务,因为 join 中只使用了 b.key1 作为 join key。
hive (mydb)> SELECT a.val, b.val, c.val FROM a JOIN b
           > ON (a.key =b.key1) JOIN c
           > ON (c.key =b.key2);

    而这个SQL会被转化为2 个 map/reduce 任务。因为 b.key1 用于第一次 join 条件,而 b.key2 用于第二次 join。

    2)执行join语句是的mapreduce逻辑

    reducer 会缓存 join 序列中除了最后一个表的所有表的记录,再通过最后一个表将结果序列化到文件系统。这一实现有助于在 reduce 端减少内存的使用量。实践中,应该把最大的那个表写在最后(否则会因为缓存浪费大量内存)。例如:

hive (mydb)> SELECT a.val, b.val, c.val FROM a
           > JOIN b ON (a.key = b.key1)JOIN c ON (c.key = b.key1);

    所有表都使用同一个 join key(使用 1 次map/reduce 任务计算)。Reduce 端会缓存 a 表和 b 表的记录,然后每次取得一个 c 表的记录就计算一次 join 结果,类似的还有:


hive (mydb)> SELECT a.val, b.val, c.val FROM a
           > JOIN b ON (a.key = b.key1)JOIN c ON (c.key = b.key2);

    这里用了 2 次 map/reduce 任务。第一次缓存 a 表,用 b 表序列化[王黎11] ;第二次缓存第一次 map/reduce 任务的结果,然后用 c 表序列化。

     Hive中提供了一个“标记”机制来显示的告诉查询优化器哪张是大表,使用方式如下:

hive (mydb)> SELECT /*+STREAMTABLE(a)*/ a.val, b.val, c.val FROM a
           > JOIN b ON (a.key = b.key1)JOIN c ON (c.key = b.key2);

4.5  排序

order by、sort by、distribute by和cluster by

order by:

    Hive中的order by语句和其他的SQL方言中的定义是一样的,其会对所有的结果执行一个全局排序。也就是说会有一个所有的数据都通过一个reducer处理的过程,但是对于大数据集,这个过程可能需要消耗很多的时间。

    如果属性hive.mapred.mode的值是strict(默认值是nonstrict)的话,执行order by语句时必须加有limit语句限制。

sort by:

    针对order by,Hive中增加了一个可以选择的方式:sort by。其会在每个reducer端都会做排序,也就是说保证了局部有序(每个reducer出来的数据是有序的,但是不能保证全局所有的数据是有序的,除非只有一个reducer)。

     无论是order by还是sort by,都可以指定任意期望进行排序的字段,并可以在这些字段后面加上asc关键字(默认的),表示按照升序排序,或者加上desc关键字,表示按照降序排序。

distribute by和sort by一起使用

     distribute by控制map输出在reducer中是如何划分的。默认情况下,MapReduce计算框架会根据map输入的键计算相应的哈希值,然后按照得到的哈希值将键-值对均匀的分发到多个reducer中去,这就意味着当使用sort by时,不同reducer的输出内容会有明显的重叠,至少对于排列顺序是这样的,即使每个reducer的输出数据都是有序的。

     假如我们希望具有相同name的数据放到同一个reducer中处理,可以使用distribute by来实现。

cluster by

    cluster by的功能就是简单版的distribute by和sort by结合,前提是distribute by和sort by中所涉及的列完全相同,而且采用的是升序(ase)排序。

    现在做个练习,创建一张表stores:

hive (mydb)> create table stores (       
           > name string,                
           > money float,                
           > mid string)                    
           > row format delimited        
           > fields terminated by '\t';


name表示store的名字,money表示这个store的盈利,mid表示这个store所属的商户。

数据源:

[hadoop@H01 ~]$ cat stores.txt  
"商店1"   18.0    A  
"商店2"   25.0    B  
"商店3"   15.0    A  
"商店4"   20.0    C  
"商店5"   30.0    C  
"商店6"   23.0    D  


加载数据:

hive (mydb)> load data local inpath '${env:HOME}/stores.txt' overwrite into  
           > table stores;

查看数据:

hive (mydb)> select * from stores;  
OK  
"商店1"   18.0    A  
"商店2"   25.0    B  
"商店3"   15.0    A  
"商店4"   20.0    C  
"商店5"   30.0    C  
"商店6"   23.0    D  
Time taken: 0.093 seconds, Fetched: 6 row(s)


现在想要求出每个商户的各个商店的盈利情况(商户名按照字典顺序,盈利按照降序)

使用order by排序:


hive (mydb)> select s.mid, s.money, s.name from stores s        
           > order by s.mid asc, s.money desc;


使用sort by排序:


hive (mydb)> select s.mid, s.money, s.name from stores s
           > sort by s.mid asc, s.money desc;


distribute by和sort by结合使用


hive (mydb)> select s.mid, s.money, s.name from stores s
           > distribute by s.mid, s.money                                 
           > sort by s.mid asc, s.money desc;


使用cluster by:

hive (mydb)> select s.mid, s.money, s.name from stores s
           > cluster by s.mid, s.money; 


     由于处理的数据比较小,所以使用order by和sort by得到的结果是一样的;比较由distribute by、sort by结合使用得到的结果和cluster by得到的结果可以发现cluster by确实是按照升序排序的。

Hive零基础从入门到实战 进阶篇(十七) HiveQL:开窗函数(层次查询) 目录 前言 1.层次查询的开窗函数表 2. 函数功能演示 2.1ntile(n) 2.1.1 举例 2.1.2 应用场景 2.2cume_dist() 前言 本文接续上文介绍第三类开窗函数:用于层次查询的开窗函数。共有三种,分别是:ntile()、cume_dist()、percent_rank()。第一个最常用,第二个很少用到,第三个完全没有见过应用场景。所以本文主... 阅读详情

相关推荐

STM32CubeMX、keil、simulink联合开发MCU教程

一、整体思路 利用Matlab的simulink搭建模型生成C代码,通过stm32cubemx生成工程,最后在KEIL或者IAR等工具里面编译生成代码下载至MCU中执行。 本文以流水灯建立模型和简单使用定时器为例进行演示。 二、开发环境 1、安装Matlab Matlab版本建议在2013B以上,本文使用Matlab 2016a。 2、安装STM32硬件支持包 下载地址(https://www.stmcu.org.cn/document/detail/index/id-216053) 安装完成后重启MAT

tzlaa的博客 7741

otl_stream查询返回数据_Hive查询18种方式

前言大家一定对Hive不陌生吧!Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能(HQL)。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。因此,hive十分适合对数据仓库进行统计分析。本期内容,我们就来探讨一下,关...

weixin_39592315的博客 613

关于LIO-SAM编译时出现错误 /usr/bin/ld: 找不到 -lBoost::timer

关于LIO-SAM编译时出现错误: 下载LIO-SAM代码 进入LIO-SAM文件夹,通过以下代码编译: mkdir build cd build cmake .. make 报错: /usr/bin/ld: 找不到 -lBoost::timer collect2: error: ld returned 1 exit status CMakeFiles/lio_sam_imuPreintegration.dir/build.make:759: recipe for target 'devel/lib/li

wwtx的博客 3648

HiveQL练习(hive3.x)

本文详细介绍了Hive关于管理表、外部表、分区表和桶表的创建和基本操作,结合emp和dept数据介绍了Hive的各种查询语句的写法。

tangyi2008的专栏 2432

异步bus交互(一)— 两级DFF同步器

异步bus交互(一)— 两级DFF同步器 跨时钟域处理 & 亚稳态处理 1.问题产生 现在的芯片(比如SOC,片上系统)集成度和复杂度越来越高,通常一颗芯片上会有许多不同的信号工作在不同的时钟频率下。比如SOC芯片中的CPU通常会工作在一个频率上,总线信号(比如DRAM BUS)会工作在另一个时钟频率下,而普通的信号又会工作在另外的时钟频率下。这3个不同时钟频率下工作的信号往往需要相互沟通和传递信号。 不同时钟域下的信号传递就涉及到跨时钟域信号处理,因为相互之间的频率、相位不一样,如果不做处理或者

qq_44816673的博客 5121

别再为淘宝滑块发愁了!一个Python脚本自动获取x5sec cookie的保姆级教程

本文提供了一套完整的Python自动化解决方案,帮助开发者轻松应对淘宝滑块验证码问题。通过模拟浏览器行为、精准识别滑块缺口位置和生成拟人化移动轨迹,脚本能够自动获取关键的x5sec cookie,显著提升爬虫效率。教程涵盖环境配置、验证机制分析、代码实现及反检测策略,是解决淘宝滑块验证的实用指南。

weixin_30300225的博客 577

HiveQL常用查询语句——排序、分桶、分桶抽样子句记录

由于hivesql中查询语句时,常用查询条件比较多,所以专门写一篇博文对HiveQL的查询语句进行总结,理清联系和区别。 目录 1. 排序子句 (1)单列全局排序order by (2)多列排序 (3)每个MapReduce内部排序(sort by) (4)分区排序(distribute by 字段1 sort by 字段2) (5)分区排序(cluster by) 2. 分桶查询...

攻城狮Kevin 3821

跟着团子学SAP CO:基于成本的完工百分比结算:Cost-based POC(以项目为例)

本文以英国及北美会计准则下的基于成本的POC的销售型项目结算对PS模块中的完工百分比进行介绍

Lucas1211的博客 2万+

HiveQL数据查询基础

HiveQL数据查询基础 HiveQL数据查询语法 select语句 在所有数据库系统中,select语句是应用最广的,也是相对复杂的语句,它用于选取字段。同样,Hive中的select语句也是比较复杂的查询语句。 select */field1,field2... from tableName, where语句 select语句用于选取字段,where语句则用于过滤条件,两者结合使用可以查找到符合过滤条件的记录。 group by语句 group by语句通常会和聚合函数一起使用,其语意为按照一个或者多

shi_zi_183的博客 944

【开关】刀开关矩阵(Pole Switched Matrix)的结构讨论

矩阵主要有交叉点矩阵和树形矩阵两种矩阵结构。 交叉点矩阵是由SPST继电器排列成简单的网格形式的阵列组成;树形矩阵是由树形的多路复用模块组成,为需要高频RF带宽的应用提供解决方案。在搭建这些矩阵的同时,也限制了可提供的连接性。这也是为什么有的矩阵是简单的交叉点矩阵,而有的矩阵的交叉点中嵌入隔离继电器用来提供中间带宽的矩阵。 但是,Pickering Interfaces提供的另外一种矩阵类型其...

Tina的博客 4409

ARMv8/ARMv9的TLB深度学习

千万不要人云亦云。一个TLB entry里有很多很多东西的,有100多个比特位呢,并不是仅仅只有VA/PA/nG/VMID/ASID等。.👉👉👉 个人博客笔记导读目录(全部) 👈👈👈。

baron-周贺贺-代码改变世界ctw 1571

【大数据】HiveQL的查询操作

HiveQL的查询操作。

Data · Model · Agent · Repeat 1206

微信小程序 - 强力解决wx.getLocation定位不准的问题,如何修正微信小程序wx.getLocation获取用户位置信息不准确解决办法(高精度定位还是不够精准,定位不准有偏差,彻底消除误差)

如何解决getLocation定位偏差的问题?微信小程序API—wx.getLocation定位不准的问题,微信小程序wx.getLocation获取用户位置信息不准确解决办法,解决微信小程序wx.getLocation定位不准的问题,定位不准确,实际位置偏差大,相差几公里,微信小程序wx.getLocation获取用户位置信息不准确解决办法,关于微信小程序获取准确定位的方法及解决定位不准确的问题,偏差太多好几百米,wx.getLocation 返回定位精度不准问题,如何消除这个误差,开启高精度定位依旧有误

🏆 前端领域优质创作者 1万+

Hive学习—HiveQL:查询

第6章 HiveQL:查询 6.1 SELECT…FROM语句 选择的列是集合数据类型时,Hive会使用Json语法应用于输出。 --数组类型 hive-&amp;amp;amp;gt;SELECT name,subordinates FROM employees; John Doe {&amp;amp;quot;Mary Smith&amp;amp;quot;,&amp;amp;quot;Todd Jones&amp;amp;quot;} --MAP类

weixin_43387060的博客 1360

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Hive】06-HiveQL:查询

1、SELECT FROM语句1.1、使用正则表达式来指定列我们甚至可以使用正则表达式来选择我们想要的列。下面的查询将会从表stocks中选择symbol列和所有列名以price作为前缀的列: SELECT symbol ,`price.*`FROM stocks;1.2、使用列值进行计算用户不但可以选择表中的列,还可以使用函数调用和算术表达式来操作列值。例如,我们可以查询得到转换为...

anzhouzan0567的博客 671

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hive的like查新_HiveQL:查询

SELECT...FROM语句select是SQL中的射影算子,from子句标识了从哪个表、视图或嵌套查询中选择记录:hive> select name,salary from employees;也可以写成,两者是等价的,但是下面这种写法在涉及到多个不同的表时会很有用:hive> select e.name,e.salary from employees e;可以使用列值来进行计算(...

weixin_39745013的博客 788

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

用股票数据实战Hive:从建表、分区到复杂查询,一份保姆级HiveQL入门指南

本文提供了一份详细的HiveQL入门指南,通过股票数据分析实战,从建表、分区到复杂查询,帮助读者掌握Hive在大数据处理中的基本操作。内容涵盖数据准备、表结构设计、高效数据加载技巧以及实战股票分析查询,适合大数据初学者和金融数据分析师。

weixin_30675247的博客 635

深入学习《Programing Hive》:HiveQL查询(1)

前几章已经学习过Hive表的定义和数据操纵,本章我们开始学习HiveQL查询。 [size=large][b]SELECT ... FROM ...查询[/b][/size] SELECT在SQL中是一个投影操作。让我们从新来看之前定义过的分区表employees:[code="java"] CREATE TABLE...

飞翔的荷兰人 236

Hive编程(六)【HiveQL:查询】

6.1 select…from语句有如下表结构:CREATE TABLE employees ( name STRING, salary FLOAT, subordinates ARRAY<STRING>, deductions MAP<STRING, FLOAT>, address STRUCT<street:STRING, city:STRING, state:STRING, zip:INT>

极客神殿 1415

深入学习《Programing Hive》:HiveQL查询(2)

[b]浮点比较陷阱[/b] 在[b]WHERE[/b]查询条件中:在比较不同类型的数值(如FLOAT vs DOUBLE)时,会引发[b]浮点比较陷阱[/b]。 看下面的HiveQL语句,本来只想要查询Federal Taxes > 0.2,但是返回结果如下:[code="java"] hive> SELECT na...

飞翔的荷兰人 179

深入学习《Programing Hive》:HiveQL查询(3)

[size=large][b]DISTRIBUTE BY[/b][/size] 我们都知道,MapReduce模型是默认是通过hashPartitioner()函数将key/value的keys的hash值来数据分发到对应的Reducers,[b]DISTRIBUTE BY[/b]可以让用户来控制如何将key/value对分发到哪个Reducer。 ...

飞翔的荷兰人 181

hive的like查新_HiveQL查询操作全解(五):正则表达式

hive中的正则表达式还是很强大的。数据工作者平时也离不开正则表达式。对此,特意做了个hive正则表达式的小结。所有代码都经过亲测,正常运行。1.regexp语法: A REGEXP B 操作类型: strings 描述: 功能与RLIKE相同select count(*) from olap_b_dw_hotelorder_f where create_date_wid not regexp '...

weixin_34109083的博客 525

**Hive**:基于 Hadoop 的数据仓库工具,提供类 SQL(HiveQL)接口,将查询转换为 MapReduce/Tez/Spark 任务

- ✅ **优先选 Hive(或 Hive on Spark)当**: - 已有成熟 Hive 数仓体系(大量 HiveQL 脚本、HMS 元数据、ORC/Parquet 表); - 对 SQL 兼容性要求不高,但需强运维稳定性与企业级权限控制(如 Sentry/Ranger 集成); - 批处理任务规模极大、内存受限,且对延迟不敏感(如日志归档、月度报表)。

[Blog][Domain] programb.blog.youkuaiyun.com 149

Hive学习

分布式数据仓库HiveHive的数据存储模型在Hive中使用了4中主要的数据存储模型:表(Table)、外部表(External Table)、分区(Partition)、桶(Bucket).表 Hive表逻辑上由两部分组成:第一部分为真实数据。第二部分为母爱书表格中数据形式的元数据。 在物理实现上,Hive的每个表的数据存储在HDFS目录下,二描述表格中数据形式的元数据存储在关系型数据库中 Hiv

1006346386@qq.com 389

Hive实战指南:用户行为日志分析从采集到查询的全流程解析

通过本文的实战案例,我们完整走过了用户行为日志分析的全链路:从数据采集、ETL处理到最终的查询分析。Hive作为大数据生态中的核心组件,不仅简化了海量数据的处理流程,更通过类SQL的语法降低了数据分析的门槛,让非技术背景的业务人员也能参与到数据驱动的决策中。在大数据技术快速演进的今天,Hive依然保持着不可替代的地位。它能够无缝集成Hadoop生态系统中的其他工具(如Spark、Flink),支持多种数据格式和存储系统,同时具备良好的扩展性和稳定性。

zuiyuelong的博客 1020
上一篇: Hive--HiveQL:数据定义、数据操作
下一篇: Hive--行转列(Lateral View explode())和列转行(collect_set() 去重)
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值