Hive中explode的用法

  • Post author:
  • Post category:其他


hive的explode 函数通常是与侧视图(lateral view)一起使用,

主要用于规范化行 或者解析json

一个数据表的表数据如下所示。

在这里插入图片描述
1、我们如何把student这一列中的数据由一行变成多行。这里需要使用split和explode,并结合lateral view实现。

代码如下:

select class,studentName from class lateral view explode(split(studnet,',')) t as studentName;

在这里插入图片描述

2、每个同学来一个编号,假设编号就按姓名的顺序,此时我们要用到另一个hive函数,叫做posexplode

代码如下:


select class,stuIndex+1 as stuIndex,studentName from class lateral view posexplode(split(studnet,',')) t as stuIndex,studentName;

在这里插入图片描述

3、如果我们分别对两列进行explode的话,假设每列都有三个值,那么最终会变成3 * 3 = 9行。但我们想要的结果只有三行。此时我们可以进行两次posexplode,姓名和成绩都保留对应的序号,即使变成了9行,我们通过where条件只保留序号相同的行即可

代码如下:

select class,stuName,stuScore from class lateral view posexplode(split(studnet,',')) t as stuIndex1,stuName lateral view posexplode(split(score,',')) s as stuIndex2,stuScore where stuIndex1=stuIndex2;

在这里插入图片描述



版权声明:本文为qq_41704237原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。