hive lateral view和explode的理解


 

今天使用hive的時候需要把一個字段中的josn數據分開,於是需要用到explode()函數。網上有許多文章,但是寫的復雜,在此就概括下。
表生成函數:explode:把map集合或數組array中每個鍵值對或數組中的每個元素都單獨生成一行的形式。
explode()就是內置表生成函數(UDTF),UDTF將為每個輸入行生成零個或多個輸出行。

fromClause: FROM baseTable (lateralView)*
lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)*

具體的代碼:

select goods_id2,sale_info 
from explode_lateral_view LATERAL VIEW explode(split(goods_id,','))goods as goods_id2;

這里的explode_lateral_view就是basetable,lateral view可以使用basetable中的任意列,LATERAL VIEW explode(split(goods_id,’,’))goods這個就是虛擬表,相當於在這個表中做select,然后goods_id2就是explode()后的列的列名
在這里插入圖片描述
這個就是原始圖。
在這里插入圖片描述
這個就是select后的圖。

參考的博文:
https://blog.csdn.net/guodong2k/article/details/79459282
https://blog.csdn.net/SunnyYoona/article/details/62894761

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM