spark行列資料轉換
阿新 • • 發佈:2020-12-22
spark 1X1維度的資料轉換成nX1維度
# orderid需要進行拆分欄位
select orderid,orderids
from table_names
lateral view explode (split(orderid,','))o as orderids
json文字提取相同key的多個values
select distinct get_json_object(body,'$.session.sid')as sid ,orderids,orderid ,body ,get_json_object(orderids,'$.orderId')as id from table_names lateral view explode (split(regexp_replace(regexp_extract(get_json_object(body,'$.session.orderIds'),'^\\[(.+)\\]$',1),'\\}\\,\\{', '\\}\\|\\|\\{'),'\\|\\|'))b as orderids -- 先正則替換,一行轉多行 lateral view json_tuple(orderids,'orderId')d as orderId -- 然後提取所需關鍵詞 where get_json_object(body,'$.session.sid')='123456'
spark nX1維度的資料轉換成1X1維度
collect_set(欄位) ## 去重將多行資料轉換成一維陣列格式
collect_list(欄位) ## 不去重將多行資料轉換成一維陣列格式
collect_set(欄位)[0] ## 取陣列中的第一個資料
相當於將值進行了聚合,因此需要group by 操作