• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

Robin_Yao_Wenbin

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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

 

posted on 2019-02-27 14:02  Robin_Yao_Wenbin  阅读(2632)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3