之前也经常用到这两个函数,一般都是两个一起使用,没有区分这两个函数的区别。最近在用的时候,查了下还是在这里记录一下。
explode
explode函数作用就是将hive一行中复杂的array或者map结构拆分成多行。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019052414422499.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x5aDAzNjAx,size_16,color_FFFFFF,t_70)
lateral view
lateral view与用户定义的表生成函数一起使用,如explode函数,为了解决UDTF不允许在select字段的问题。UDTF为每个输入行生成零个或多个输出行。lateral view首先将UDTF应用于基表的每一行,然后将生成的输出行连接到输入行,以形成虚拟表。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190524144955467.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x5aDAzNjAx,size_16,color_FFFFFF,t_70)