大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍hive如何实现行转列,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都做网站、外贸营销网站建设、禄劝网络推广、微信小程序、禄劝网络营销、禄劝企业策划、禄劝品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供禄劝建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
1。问题
hive如何将
a b 1,2,3
c d 4,5,6
变为:
a b 1
a b 2
a b 3
c d 4
c d 5
c d 6
答案如下:
2。原始数据:
test.txt
a b 1,2,3
c d 4,5,6
3。解决方法
方案1:
drop table test_jzl_20140701_test;
create table test_jzl_20140701_test
(
col1 string,
col2 string,
col3 string
)
row format delimited fields terminated by ' '
stored as textfile;
load data local inpath '/home/jiangzl/shell/test.txt' into table test_jzl_20140701_test;
select * from test_jzl_20140701_test
a b 1,2,3
c d 4,5,6
遍历数组中的每一列
select col1,col2,name
from test_jzl_20140701_test
lateral view explode(split(col3,',')) col3 as name;
a b 1
a b 2
a b 3
c d 4
c d 5
c d 6
方案2:
drop table test_jzl_20140701_test1;
create table test_jzl_20140701_test1
(
col1 string,
col2 string,
col3 array
)
row format delimited
fields terminated by ' '
collection items terminated by ',' //定义数组的分隔符
stored as textfile;
load data local inpath '/home/jiangzl/shell/test.txt' into table test_jzl_20140701_test1;
select * from test_jzl_20140701_test1;
a b [1,2,3]
c d [4,5,6]
遍历数组中的每一列
select col1,col2,name
from test_jzl_20140701_test1
lateral view explode(col3) col3 as name;
a b 1
a b 2
a b 3
c d 4
c d 5
c d 6
4。补充知识点:
select * from test_jzl_20140701_test;
a b 1,2,3
c d 4,5,6
select t.list[0],t.list[1],t.list[2] from (
select (split(col3,',')) list from test_jzl_20140701_test)t;
OK
1 2 3
4 5 6
--查看数组长度
select size(split(col3,',')) list from test_jzl_20140701_test;
3
3
以上是“hive如何实现行转列”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!