這篇文章主要介紹hive如何實現(xiàn)行轉(zhuǎn)列,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、祿勸網(wǎng)絡(luò)推廣、微信小程序、祿勸網(wǎng)絡(luò)營銷、祿勸企業(yè)策劃、祿勸品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供祿勸建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
1。問題
hive如何將
a b 1,2,3
c d 4,5,6
變?yōu)椋?/p>
a b 1
a b 2
a b 3
c d 4
c d 5
c d 6
答案如下:
2。原始數(shù)據(jù):
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
遍歷數(shù)組中的每一列
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 ',' //定義數(shù)組的分隔符
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]
遍歷數(shù)組中的每一列
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
--查看數(shù)組長度
select size(split(col3,',')) list from test_jzl_20140701_test;
3
3
以上是“hive如何實現(xiàn)行轉(zhuǎn)列”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!