beeline連線hive Hive行轉列詳解

2021-10-17 07:55:25 字數 2793 閱讀 4056

孫悟空 白羊座 a

沙悟淨 射手座 a

宋鬆鬆 白羊座 b

豬八戒 白羊座 a

小鳳姐 射手座 a

轉換成以下格式:

白羊座,a 孫悟空|豬八戒

白羊座,b 宋鬆鬆

射手座,a 沙悟淨|小鳳姐

知識點:concat(string1,string2) string1和string2需要是列名

-- 使用hive的beeline客戶端,使用t_vehicle_log,並檢視該錶的secma

-- 對其中兩列字段進行拼接

--concat()  對拼接的兩列字串中間用,連線

select concat(vehicle_speed,",",vehicle_plate) from t_vehicle_log;

加入我們要拼接多個列,並且需要用同樣的分隔符(如a,b,c,d),該怎麼做呢?

——我們可以使用concat_ws()

如果某一列有很多重複的字段,我們需要對其進行去重,並對去重欄位返回乙個陣列,該怎麼辦呢?

—— 我們可以使用 collect_set()

以上為本次需求所需的知識點的講解,下面開始解決本次需求:

-- 建表:

create table person_info(

name string,

constellation string,

blood_type string)

row format delimited fields terminated by "t";

-- 插資料

load data local inpath '/person_info.txt' into table person_info;

使用concat_ws()查詢:

select concat_ws(",",constellation,blood_type) c_b,name from person_info;
結果:

select 

t1.c_b,

collect_set(t1.name)

from(

select concat_ws(",",constellation,blood_type) c_b,

name from person_info

) t1

group by t1.c_b;

最終結果:collect_set()返回的是陣列,concat_ws()接受的string或者是string陣列

將陣列劃分開:

select 

t1.c_b,

concat_ws("|",collect_set(t1.name))

from(

select concat_ws(",",constellation,blood_type) c_b,

name from person_info

) t1

group by t1.c_b;

結果:

到此,任務完成。我們下期再見。

乙個不務正業的技術博主

hive的beeline連線方式

補充 關於後台執行任務的一些補充 1.這個用在乙個命令的最後,可以把這個命令放到後台執行 2.ctrl z 可以將乙個正在前台執行的命令放到後台,並且暫停 3.jobs 檢視當前有多少在後台執行的命令 4.fg 將後台中的命令調至前台繼續執行 如果後台中有多個命令,可以用 fg 後台程序號,將選中的...

Beeline連線Hiveserver2錯誤

錯誤定位 最近給hadoop集群配置了kerberos認證,之後準備配置sentry進行許可權管理。安裝並啟用sentry服務後需要在beeline進行grant等授權操作。note that since hive cli does not work with hiveserver2,it cann...

hive使用beeline配置遠端連線

hive以hadoop集群為基礎,提供hdfs的sql支援 介紹hive的遠端訪問 未配置之前使用beeline的話,每次都要為連線輸入使用者名稱密碼,較為麻煩 實現目標 在非集群節點上敲beeline命令,直接進入到hive的命令列 1,在hive服務的安裝節點的hive site.xml配置檔案...