Titan笔记

  • 首页
  • Java
  • 数据结构
  • C语言
  • Web
  • 杂谈
  • 移动开发
  • 逸笔挥墨
Titan笔记
分享学习,研究与开发的点滴记忆
  1. 首页
  2. 大数据
  3. Hive
  4. 正文

关于Hive使用的一些实例

2020年8月20日 979点热度 3人点赞 0条评论

行转列聚合

一、开始之前

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

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

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

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

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

3、COLLECT_SET(col):

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

二、准备数据

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

namesexage
Titan男18
Goodman男18
Cooper男10
Missy女10
Penny女27

三、需求分析

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

infoname
女-10Missy
女-27Penny
男-10Cooper
男-18Titan,Goodman

四、创建Hive表并导入数据

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

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将多行转为去重列表

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;

最后,查看输出结果

infoname
女-10Missy
女-27Penny
男-10Cooper
男-18Titan,Goodman

列转行拆分

一、开始之前

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

1、EXPLODE(col):

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

2、LATERAL VIEW

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

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

二、准备数据

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

moviecategory
《疑犯追踪》["悬疑","动作","科幻","剧情"]
《Lie to me》["悬疑","警匪","动作","心理","剧情"]
《战狼 2》["战争","动作","灾难"]

三、需求分析

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

moviecategory_name
《疑犯追踪》悬疑
《疑犯追踪》动作
《疑犯追踪》科幻
《疑犯追踪》剧情
《Lie to me》悬疑
《Lie to me》警匪
《Lie to me》动作
《Lie to me》心理
《Lie to me》剧情
《战狼 2》战争
《战狼 2》动作
《战狼 2》灾难

四、创建 movie_info 表并导入数据

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

五、根据需求,将分类列表拆分,实现列转行

select
	movie,
	category_name
from
	movie_info lateral view explode(category) table_tmp as category_name;
moviecategory_name
《疑犯追踪》悬疑
《疑犯追踪》动作
《疑犯追踪》科幻
《疑犯追踪》剧情
《Lie to me》悬疑
《Lie to me》警匪
《Lie to me》动作
《Lie to me》心理
《Lie to me》剧情
《战狼 2》战争
《战狼 2》动作
《战狼 2》灾难
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: Apache-Hive Hive入门 Hive实例 Hive案列实操 Hive环境部署与快速入门
最后更新:2020年8月20日

Titan

不为岁月流逝蹉跎,不为潮流的势头去附和

点赞
< 上一篇

文章评论

您需要 登录 之后才可以评论
最新 热点 随机
最新 热点 随机
Docker配置IPv6容器网络支持 什么是Elastic Stack,ELK的发展历程 K8s中Pod的基本概念 Pushkin AI - 基于OpenAI-ChatGPT / GPT3的问答机器人 云原生 - 浅谈容器基础与K8S架构设计 腾讯Serverless体验,使用TypeScript编写并部署云函数
Docker配置IPv6容器网络支持
[数据结构] 二叉搜索树的CURD(增删改查)操作 Spring Cloud 微服务学习笔记 - IDEA工程搭建 [PHP] Laravel框架介绍、安装及配置 (三) Mybatis动态SQL语句 [Java] 日期与时间的一些操作 Docker配置IPv6容器网络支持
分类
  • Android
  • C语言
  • Elasticsearch
  • Hadoop
  • Hive
  • Java
  • JavaWeb
  • Kubernetes
  • Linux运维之道
  • Mybatis学习笔记
  • Python
  • SpringCloud
  • Web
  • Web前端
  • Web后端
  • 云原生
  • 并发编程
  • 开发工具
  • 数据库
  • 数据结构
  • 杂谈
  • 移动开发
  • 移动测试
  • 诗词歌赋
  • 软件测试
  • 逸笔挥墨
  • 随摘
标签聚合
Apache-Hive 链式存储 JavaWeb Python 数据结构 Mybatis学习笔记 二叉树 Java

COPYRIGHT © 2013-2021 Titan. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备20001822号-1

豫公网安备 41010502004418号