孫悟空 白羊座 a轉換成以下格式:沙悟淨 射手座 a
宋鬆鬆 白羊座 b
豬八戒 白羊座 a
小鳳姐 射手座 a
白羊座,a 孫悟空|豬八戒知識點:concat(string1,string2) string1和string2需要是列名白羊座,b 宋鬆鬆
射手座,a 沙悟淨|小鳳姐
-- 使用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配置檔案...