Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于Hive使用的一些实例

关于Hive使用的一些实例

作者头像
泰坦HW
发布于 2020-08-22 09:49:46
发布于 2020-08-22 09:49:46
1.6K00
代码可运行
举报
文章被收录于专栏:Titan笔记Titan笔记
运行总次数:0
代码可运行

行转列聚合

一、开始之前

在进行操作之前,你需要知道以下的几个函数:

1、CONCAT(string A/col, string B/col…):

返回输入字符串连接后的结果,支持任意个输入字符串。

2、CONCAT_WS(separator, str1, str2,...):

它是一个特殊形式的 CONCAT()。第一个参数剩余参数间的分隔符。分隔符可以是与剩余参数一样的字符串。如果分隔符是 NULL,返回值也将为 NULL。这个函数会跳过分隔符参数后的任何 NULL 和空字符串。分隔符将被加到被连接的字符串之间。

3、COLLECT_SET(col):

函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生 array 类型字段。

二、准备数据

假设你拥有如下的用户数据

name

sex

age

Titan

18

Goodman

18

Cooper

10

Missy

10

Penny

27

三、需求分析

把相同性别的同龄人归类到一起,输出如下的结果

info

name

女-10

Missy

女-27

Penny

男-10

Cooper

男-18

Titan,Goodman

四、创建Hive表并导入数据

1、建立user_info表,将数据导入到表中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE table user_info(
	name string,
    sex string,
    age string
) 
row format delimited fields terminated by "\t";

load data local inpath './users.txt' into table user_info;

2、根据需求,查询数据,使用CONCAT拼接字段,用COLLECT_SET将多行转为去重列表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT
	t1.info,
	CONCAT_WS(',', COLLECT_SET(t1.name)) name
FROM
	(
	SELECT
		name, CONCAT_WS('-', sex, age) info
	FROM
		user_info ) t1
GROUP BY
	t1.info;
最后,查看输出结果

info

name

女-10

Missy

女-27

Penny

男-10

Cooper

男-18

Titan,Goodman

列转行拆分

一、开始之前

在进行操作之前,你需要知道以下的几个函数:

1、EXPLODE(col):

hive 一列中复杂的 array 或者 map 结构拆分成多行。

2、LATERAL VIEW

用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias

解释:用于和 split, explode 等 UDTF 一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。

二、准备数据

假设你拥有这样的电影数据

movie

category

《疑犯追踪》

["悬疑","动作","科幻","剧情"]

《Lie to me》

["悬疑","警匪","动作","心理","剧情"]

《战狼 2》

["战争","动作","灾难"]

三、需求分析

将每个电影的分类拆分出来,展开数据

movie

category_name

《疑犯追踪》

悬疑

《疑犯追踪》

动作

《疑犯追踪》

科幻

《疑犯追踪》

剧情

《Lie to me》

悬疑

《Lie to me》

警匪

《Lie to me》

动作

《Lie to me》

心理

《Lie to me》

剧情

《战狼 2》

战争

《战狼 2》

动作

《战狼 2》

灾难

四、创建 movie_info 表并导入数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table movie_info(
	movie string,
	category array<string>
)
row format delimited fields terminated by "\t"
collection items terminated by ",";

hive (db_titan)> load data local inpath 'movies.txt' into table movie_info;
Loading data to table db_titan.movie_info
Table db_titan.movie_info stats: [numFiles=1, totalSize=135]
OK
Time taken: 0.556 seconds
五、根据需求,将分类列表拆分,实现列转行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select
	movie,
	category_name
from
	movie_info lateral view explode(category) table_tmp as category_name;

movie

category_name

《疑犯追踪》

悬疑

《疑犯追踪》

动作

《疑犯追踪》

科幻

《疑犯追踪》

剧情

《Lie to me》

悬疑

《Lie to me》

警匪

《Lie to me》

动作

《Lie to me》

心理

《Lie to me》

剧情

《战狼 2》

战争

《战狼 2》

动作

《战狼 2》

灾难

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年08月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Hive开发问题汇总
select id,concat_ws('|', collect_set(name)) from tmp_test group by id;
大王叫我来巡山、
2025/07/11
880
Hive部分函数简析
  对查询结果做一次全局排序,即所有Mapper产生的结果都会交给一个reducer处理,无论数据量大小,job任务只会启动一个reducer,所以如果数据量巨大,会耗费大量时间计算。(在严格模式下,oeder by 需要指定limit数据条数,从而避免因为数据量过大造成集群崩坏。)
挽风
2021/04/13
3810
Hive学习-lateral view 、explode、reflect和窗口函数
然后挂了FAILED: SemanticException [Error 10081]: UDTF's are not supported outside the SELECT clause, nor nested in expressions
顾翔
2024/09/10
6460
Hive学习-lateral view 、explode、reflect和窗口函数
一文学完所有的Hive Sql(两万字最全详解)
lateral view用于和split、explode等UDTF一起使用的,能将一行数据拆分成多行数据,在此基础上可以对拆分的数据进行聚合,lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一行或者多行,lateral view在把结果组合,产生一个支持别名表的虚拟表。
五分钟学大数据
2021/04/02
3.3K0
Hive基础操作
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。
CBeann
2023/12/25
6470
【Hive】SQL语句大全
继承 org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;
全栈程序员站长
2022/08/30
2.7K0
Hive根据用户自定义函数、reflect函数和窗口分析函数
(2)UDAF(User-Defined Aggregation Function)
顾翔
2024/09/10
5020
Hive根据用户自定义函数、reflect函数和窗口分析函数
大数据技术之_09_Hive学习_复习与总结
在讲解中我们需要贯串一个例子,所以需要设计一个情景,对应还要有一个表结构和填充数据。如下:有 3 个字段,分别为 personId 标识某一个人,company 标识一家公司名称,money 标识该公司每年盈利收入(单位:万元人民币)
黑泽君
2019/03/21
8720
大数据技术之_09_Hive学习_复习与总结
快速学习-Hive查询
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select 查询语句语法:
cwl_java
2020/02/21
2K0
快速学习-Hive查询
硬刚Hive | 4万字基础调优面试小总结
Hive是基于Hadoop的数据仓库工具,可对存储在HDFS上的文件中的数据集进行数据整理、特殊查询和分析处理,提供了类似于SQL语言的查询语言–HiveQL,可通过HQL语句实现简单的MR统计,Hive将HQL语句转换成MR任务进行执行。
王知无-import_bigdata
2021/06/01
2.1K0
硬刚Hive | 4万字基础调优面试小总结
2021_03_25
A 问题 1.spark⽀持故障恢复的⽅式? 2.详细说一下hadoop和spark的相同点和不同点? 3.spark如何保证宕机迅速恢复? A1 spark⽀持故障恢复的⽅式? 主要包括两种⽅式
CoreDao
2021/04/12
4680
2021_03_25
大数据技术之_08_Hive学习_03_查询+函数
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select 查询语句语法:
黑泽君
2019/03/11
1.9K0
大数据技术之_08_Hive学习_03_查询+函数
Hive函数
**CONCAT_WS(separator, str1, str2,...):**多字符串拼接
ha_lydms
2023/11/19
6151
Hive函数
最强最全面的Hive SQL开发指南,超四万字全面解析!
hive -S -e 'select table_cloum from table' -S,终端上的输出不会有mapreduce的进度,执行完毕,只会把查询结果输出到终端上。
五分钟学大数据
2021/12/02
8.1K0
最强最全面的Hive SQL开发指南,超四万字全面解析!
Hive个人笔记总结
①保证环境变量中有JAVA_HOME ②基于HADOOP工作,保证环境变量中有HADOOP_HOME ③在环境变量中配置HIVE_HOME,默认hive在启动时,会读取HIVE_HOME/conf中的配置文件
Java架构师必看
2021/05/14
2.7K0
Hive基础09、HQL查询语句
hive -S -e 'select table_cloum from table' -S,终端上的输出不会有mapreduce的进度,执行完毕,只会把查询结果输出到终端上。
红目香薰
2022/11/30
6.4K0
Hive基础09、HQL查询语句
五万字 | Hive知识体系保姆级教程
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
数据社
2021/08/27
2.2K0
五万字 | Hive知识体系保姆级教程
Hive_
HiveSQL ->AST(抽象语法树) -> QB(查询块) ->OperatorTree(操作树)->优化后的操作树->mapreduce任务树->优化后的mapreduce任务树
挽风
2023/10/17
4000
Hive_
Vue 生命周期钩子
每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。
HammerZe
2022/05/09
3790
Vue 生命周期钩子
Hive学习
         Hive是基于Hadoop的一个数据仓库工具(离线),可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
曼路
2018/10/18
1.2K0
相关推荐
Hive开发问题汇总
更多 >
交个朋友
加入[数据] 腾讯云技术交流站
获取数据实战干货 共享技术经验心得
加入数据技术工作实战群
获取实战干货 交流技术经验
加入[数据库] 腾讯云官方技术交流站
数据库问题秒解答 分享实践经验
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档