Hive中行列转换

原创 2015年07月08日 23:30:04
1、演示多列转为单行
数据文件及内容: student.txt
xiaoming|english|92.0
xiaoming|chinese|98.0
xiaoming|math|89.5
huahua|chinese|80.0
huahua|math|89.5

创建表studnet:
create table student(name string,subject string,score decimal(4,1))
row format delimited
fields terminated by '|';

导入数据:
load data local inpath '/home/hadoop/hivetestdata/student.txt' into table student;


列转为行演示:
hive (hive)> select name,concat_ws(',',collect_set(subject)) from student group by name;
huahua    chinese,math
xiaoming english,chinese,math


hive (hive)> select name,concat_ws(',',collect_set(concat(subject,'=',score))) from student group by name;
huahua chinese=80,math=89.5
xiaoming english=92,chinese=98,math=89.5


2、演示单行转为多列
数据文件及内容:student2.txt
huahua|chinese=80,math=89.5
xiaoming|english=92,chinese=98,math=89.5

创建表:
create table student2(name string,subject_score_list string)
row format delimited

fields terminated by '|';

导入数据:

load data local inpath '/home/hadoop/hivetestdata/student2.txt' into table student2;

行转为列演示:
hive (hive)> select * from student2;
student2.name student2.subject_score_list
huahua             chinese=80,math=89.5
xiaoming          english=92,chinese=98,math=89.5


hive (hive)> select name, subject_list from student2 stu2 lateral view explode(split(stu2.subject_score_list,','))stu_subj as subject_list; ----别名一定不要忘记
huahua    chinese=80
huahua    math=89.5
xiaoming english=92
xiaoming chinese=98
xiaoming math=89.5


Impala的行列转换请查看: http://blog.csdn.net/jiangshouzhuang/article/details/46809931
版权声明:本文为博主原创文章,未经博主允许不得转载。

hive collect_set,lateral view,explode 实现行列转换

hive sql 实现行列转换
  • zwj841558
  • zwj841558
  • 2017年05月23日 11:50
  • 430

hive-列转行和行转列

1. 假设我们在hive中有两张表,其中一张表是存用户
  • JThink_
  • JThink_
  • 2014年08月26日 21:27
  • 41408

hive UDAF行列转换

目标实现 1 a 1 b 2 a 2 c 转换为 1 a,b 2 a,c package com.hive.udf; //用法 select a,concat1(b,',') from concat...
  • u011750989
  • u011750989
  • 2015年12月03日 15:22
  • 448

Hive行转列,列转行

下面举两个例子: 例一: 行转列 数据: a b 1 a c 2 a b 3 c d 4 c d 5 c d 6 转化为: a b 1,2,3 c d 4,5,6  创表...
  • Wei_HHH
  • Wei_HHH
  • 2017年08月29日 09:12
  • 681

hive 行转列 列转行操作

一、行转列的使用 1、问题 hive如何将 a       b       1 a       b       2 a       b       3 c     ...
  • bsf5521
  • bsf5521
  • 2017年08月02日 13:36
  • 272

hive行列转换

1.行专列 表数据: name ,subject ,score xiaoming|english|92.0 xiaoming|chinese|98.0 xiaoming|math|89.5 ...
  • zhoulixin8
  • zhoulixin8
  • 2015年12月04日 13:31
  • 194

2005的行列转换

2005的行列转换:create table ta(编号 int,人员 varchar(5), 年份 int,月份 int ,[1号] varchar(5), [2号] varchar(5),[3号]...
  • roy_88
  • roy_88
  • 2007年02月13日 17:01
  • 2223

hive转置

wmj
  • star20081745
  • star20081745
  • 2015年08月21日 08:14
  • 1346

hive之实现列转行

样例: select * from tab1 limit 10; 结果: id  num a  1 a  2 a  3 b  4 b  3 ···...
  • sunlei1980
  • sunlei1980
  • 2015年06月20日 16:50
  • 3209

Hive行列转换-lateral view的使用

lateral view用于和split、explode等UDTF一起使用的,能将一行数据拆分成多行数据;在此基础上可以对拆分的数据进行聚合。lateral view首先为原始表的每行调用UDTF,U...
  • BabyFish13
  • BabyFish13
  • 2017年05月19日 14:22
  • 606
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hive中行列转换
举报原因:
原因补充:

(最多只允许输入30个字)