🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
●▲● `explode(array)` -- 返回n行,每行对应数组中的一个元素 示例1: ```sql 0: jdbc:hive2://hadoop101:10000> select explode(array(1,2,3,4)); +------+--+ | col | +------+--+ | 1 | | 2 | | 3 | | 4 | +------+--+ ``` 示例2: (1)准备数据`course.txt` ```txt 1,zhangsan,数学:语文:英语:生物 2,lisi,数学:语文 3,wangwu,化学:计算机:java ``` (2)建表 ```sql create table course( uid string, name string, kc array<string> ) row format delimited fields terminated by ',' collection items terminated by ':'; ``` (3)加载数据到表中 ```sql 0: jdbc:hive2://hadoop101:10000> load data local inpath '/opt/software/source/course.txt' into table course; ``` (4)查看数据 ```sql 0: jdbc:hive2://hadoop101:10000> select uid, name, kc[0] from course; +------+-----------+------+--+ | uid | name | _c2 | +------+-----------+------+--+ | 1 | zhangsan | 数学 | | 2 | lisi | 数学 | | 3 | wangwu | 化学 | +------+-----------+------+--+ ``` (5)将一个数组变成一列 ```sql 0: jdbc:hive2://hadoop101:10000> select explode(kc) from course where uid=1; +------+--+ | col | +------+--+ | 数学 | | 语文 | | 英语 | | 生物 | +------+--+ ``` ●▲● `explode(map)` -- 返回n行2列,每行对应每个map的k/v,第一列是map的k;第二列是map的v。 ```sql 0: jdbc:hive2://hadoop101:10000> select explode(map(1,2,3,4)); +------+--------+--+ | key | value | +------+--------+--+ | 1 | 2 | | 3 | 4 | +------+--------+--+ ``` ●▲● `json_tuple(jsonStr, k1, k2, ...)` -- 从一个JSON字符串中获取多个key对应的value,并作为一个元组返回 ●▲● `parse_url_tuple(url, p1, p2,...)` -- 返回字符串URL中抽取指定N部分的内容,并作为一个元组返回;p1、p2就是抽取的部分