`

hive 行列转换案例

    博客分类:
  • hive
 
阅读更多

 

 

 

0  stu表数据:

 

stu:
id             name
hello,you zm2008
hello,me zm2015

 

 

1 实现单词计数:     (列转行)   ---> split切分+explode(炸开)

 

1.0 数据拆分成数组

select split(id,',') from  stu;    得到数组
[hello,you]
[hello,me]

 

1.1 继续将数组拆分(hive explode函数会将数组继续拆分成单个字符)

select explode(split(id,','))  from stu;   窗体函数
hello
you
hello
me

 

 

1.2 分组统计:

select t1.c1, count(1) from (select explode(split(id,',')) as c1  from stu)  t1 group by t1.c1;
hello 2
you 1
me 1

 

上述语句中, t1表是1.1的结果

 

 

2  行转列:  明确以哪个字段分组,分组后将列转成行使用  

  --->  多列间隔符concat_ws+封装多列组合体 collect_set+ 分组字段 grtoup by

公式: concat_ws(",",collect_set(要转成行的列))  group by 分组列

 

2.0 表数据

 

列转换行:
user
id name
1 zhangsan
2 lisi
3 wangwu

address
name     addr
zhangsan beijing
zhangsan shanghai
lisi tianjin
wangwu nanjing

期待结果:
1 zhangsan beijing,shanghai
2 lisi tianjin
3 wangwu nanjing

 

2.1  函数介绍:

collect_set(x)   列转行函数---没有重复, 组装多列的数据的结构体
collect_list(x)   列转行函数---可以有重复,组装多列的数据的结构体
concat_ws 拼接函数, 用于多列转成同一行字段后,间隔符

 

 

2.2 操作步骤:

 

2.2.0:

select user.id, user.name, address.addr from user join address on user.name = address.name;
1 zhangsan beijing
2 zhangsan shanghai
3 lisi tianjin
4 wangwu nanjing

 

2.2.1:

select max(user.id), user.name, collect_set(address.addr) from user join address on user.name = address.name group by user.name;
2 lisi [tianjin]
3 wangwu [nanjing]
1 zhangsan [shanghai,beijing]

 

2.2.2: 以name分组,将name相同下的 addr列转变成行存储,并且分组后列为多个下下以,做间隔

select max(user.id) as id, user.name, concat_ws(",",collect_set(address.addr)) from user join address on user.name = address.name group by user.name order by id;
1 zhangsan shanghai,beijing
2 lisi tianjin
3 wangwu nanjing

 

 

2.3 多行转换一列案例2:

一、问题

hive如何将

a       b       1
a       b       2
a       b       3
c       d       4
c       d       5
c       d       6

变为:

a       b       1,2,3
c       d       4,5,6


二、数据

test.txt

a       b       1 
a       b       2 
a       b       3 
c       d       4 
c       d       5 
c       d       6

三、答案

1.建表

drop table tmp_jiangzl_test;
create table tmp_jiangzl_test
(
col1 string,
col2 string,
col3 string
)
row format delimited fields terminated by '\t'
stored as textfile;


load data local inpath '/home/jiangzl/shell/test.txt' into table tmp_jiangzl_test;

2.处理

select col1,col2,concat_ws(',',collect_set(col3)) 
from tmp_jiangzl_test  
group by col1,col2;

 

 

 

3 行转换列:  查询多个字段下 later view的使用

 

行转列中,如果查询字段是多个,不仅仅是列转行的这个字段的话,那么久要是用到 later view注意later view后要有别名
1    zhangsan    shanghai,beijing
2    lisi    tianjin
3    wangwu    nanjing
 
create table stu(id string,name string,addr string) row format delimited fields terminated by '\t';
 
load data local inpath '/home/18511893257/stu' into table stu;
 
select id, name, addr1  from stu  lateral view explode(split(addr,','))a as addr1; 
OK
1       zhangsan        shanghai
1       zhangsan        beijing
2       lisi    tianjin
3       wangwu  nanjing

 

 

 

 4 行转换列:  单表下写法

 

 

hive如何将

a       b       1
a       b       2
a       b       3
c       d       4
c       d       5
c       d       6

变为:

a       b       1,2,3
c       d       4,5,6

 

 

select col1,col2,concat_ws(',',collect_set(col3)) 
from tmp_jiangzl_test  
group by col1,col2;    ----------------》 已经验证过  OK

 

 

 

 

分享到:
评论

相关推荐

    《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf

    《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第...

    《Hive数据仓库案例教程》教学大纲.pdf

    《Hive数据仓库案例教程》教学大纲主要涵盖了Hive在大数据环境中的应用,以及如何通过Hive构建数据仓库。Hive作为一个基于Hadoop的数据仓库工具,它的主要功能是将结构化的数据文件映射为数据库表,并提供SQL-like...

    hive综合应用案例-用户搜索日志分析.docx

    需要注意的是,这里假设`search_time`字段是日期时间格式的字符串,使用Hive的日期函数将其转换为日期格式,并按日期进行分组统计: ```sql SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(search_time, 'yyyy-MM-dd HH:mm:ss...

    hive影评案例.zip

    4. **MovieTypeUDTF.java** - 这是一个Java源代码文件,名字中的"UDTF"通常代表User Defined Table-Valued Function,这是Hive中的一种函数类型,用于扩展Hive的功能,将单行输入转换为多行输出。这个特定的函数可能...

    利用Hive进行复杂用户行为大数据分析及优化案例

    利用Hive进行复杂用户行为大数据分析及优化案例(全套视频+课件+代码+讲义+工具软件),具体内容包括: 01_自动批量加载数据到hive 02_Hive表批量加载数据的脚本实现(一) 03_Hive表批量加载数据的脚本实现(二) ...

    基于 Hive的数据分析案例 -MM聊天软件数据分析

    基于 Hive 的数据分析案例 -MM 聊天软件数据分析 本资源摘要信息主要介绍了基于 Hive 的数据分析案例,通过对 MM 聊天软件的数据进行统计分析,了解用户行为,实现精准的用户画像,并为公司的发展决策提供精确的...

    hive建表操作案例.txt

    hive分桶,分区操作案例实战。学习的好资料。hive分桶,分区操作案例实战。学习的好资料。hive分桶,分区操作案例实战。学习的好资料。

    hive(六)案例专用

    hive六中案例所需要的资源,本案例是对sql语句的练习。

    hive综合应用案例 - 用户搜索日志分析.zip

    本案例将详细介绍如何利用Hive对大量用户搜索日志进行清洗、转换和分析,以及如何提取关键指标。 【标签】:“Hive” Hive的核心特性在于其可扩展性和灵活性,适合处理PB级别的数据。它的主要功能包括数据存储、...

    大数据 hive 实战数据

    在实际操作中,我们可能会使用Hive进行ETL(Extract, Transform, Load)过程,从原始数据中抽取、转换并加载到Hive表中。然后通过HQL进行数据探索、统计分析、报表生成等任务。此外,Hive还支持与其他大数据组件如...

    hive影评案例.rar

    本案例“hive影评案例.rar”提供了使用Java编程语言与Hive进行交互的示例,旨在帮助学习大数据Hive的同学深入理解其工作原理和应用。下面我们将详细探讨Hive的核心概念、如何使用Java操作Hive以及在大数据分析中的...

    hive综合应用案例-用户学历查询.zip

    "Hive综合应用案例——用户学历查询"这一主题,意味着我们将探讨如何利用Hive对用户学历信息进行高效、灵活的分析。在这个案例中,我们可能涉及到的数据包括用户的个人信息,尤其是教育背景,这些信息可能是从各种...

    hive优化案例

    作为企业Hadoop应用的核心产品,Hive承载着FaceBook、淘宝等大佬 95%以上的离线统计,很多企业里的离线统计甚至全由Hive完成,如我所在的电商。 Hive在企业云计算平台发挥的作用和影响愈来愈大,如何优化提速已经...

    Hive优化案例、Hive数据处理模式、Hive常见问题与优化、Hive实践

    Hive优化案例、Hive数据处理模式、Hive常见问题与优化、Hive实践 Hive是一种基于Hadoop的数据仓库工具,用于对大规模数据进行处理和分析。在大数据时代,Hive的应用非常广泛,本文将从Hive优化案例、Hive数据处理...

    hiveSQL实战案例

    在Hive SQL实战中,我们经常会遇到各种查询需求,这里我们将通过三个具体案例来探讨Hive SQL中的关键知识点,包括窗口函数的应用以及处理用户数据的技巧。 首先,我们来看窗⼝函数row_number(), rank()和dense_rank...

    hive综合应用案例-用户学历查询.rar

    本案例主要围绕“用户学历查询”这一主题,展示了Hive在实际业务场景中的应用。下面将详细阐述Hive的基本概念、架构、查询语法以及如何在用户学历查询中发挥作用。 首先,Hive是建立在Hadoop之上的数据仓库工具,它...

    hive案例之---------微博数据分析及答案.zip

    在这个“hive案例之---------微博数据分析及答案”的项目中,我们将会探索如何利用Hive进行大规模的微博数据挖掘与分析。 首先,项目说明文档.docx可能会详细阐述了该项目的目标、背景、数据来源以及预期的结果。...

    HIVE从入门到精通.pdf

    用户可以通过SQL-like语言(HQL)提交查询,Hive则负责将这些查询转换为一系列MapReduce任务执行。 - **数据存储**:Hive的数据存储建立在HDFS之上,不使用特定的数据格式,也不支持索引。用户可以自定义列和行的...

Global site tag (gtag.js) - Google Analytics