Hive 中的wordCount详解、split()、explode()、posexplode()、通过起别名的方式接收函数处理字段之后生成的新附加字段

Hive 中的wordCount详解、split()、explode()、posexplode()、通过起别名的方式接收函数处理字段之后生成的新附加字段

因为指定的列分割符是 | 所以数据并不会被分割,而且表中只定义了一个字段

所以每一行数据会作为这个字段的一条记录

然后通过split()将数据按照 ‘ , ’ 进行切分,通过explode()方法将数据扁平化 行→列

posexplode() 在 explode() 基础上再给结果加上下标

因为每一行数据切分的结果,会被当做数组

例如:

0 hello

1 java

2 hello

3 java

4 scala

0 python

1 hbase

2 hadoop

3 hadoop

……

但是 加上下标 之后,就相当于两列了,怎么去接受新的这一列呢??

可以通过别名的方式获取新字段(posexplode()方法生成的下标)

select posexplode(split(words,',')) as (index,word) from words

create table words(
    words string
)row format delimited fields terminated by '|';

// 数据
hello,java,hello,java,scala,python
hbase,hadoop,hadoop,hdfs,hive,hive
hbase,hadoop,hadoop,hdfs,hive,hive

//HQL
select word,count(*) from (select explode(split(words,',')) word from words) a group by a.word;

// 结果
hadoop	4
hbase	2
hdfs	2
hello	2
hive	4
java	2
python	1
scala	1
posted @ 2022-02-22 19:58  赤兔胭脂小吕布  阅读(214)  评论(0编辑  收藏  举报