蜂巢爆炸功能

Posted

技术标签:

【中文标题】蜂巢爆炸功能【英文标题】:Hive Explode Function 【发布时间】:2014-08-28 14:10:50 【问题描述】:

我的表

name    id  number
Joe     20   72-11433.80-11427.14-6.66-R
kay     115  3-547.86-547.86-0.00-R
mary    85   12-0.49-0.49-0.00-R

从我的表中选择 *

Joe   20    72-11433.80-11427.14-6.66-R
kay   115   3-547.86-547.86-0.00-R
mary  85    12-0.49-0.49-0.00-R

从 myTable 中选择 split(number,'\-')

["72","11433.80","11427.14","6.66","R"]
["3","547.86","547.86","0.00","R"]
["12","0.49","0.49","0.00","R"]

SELECT explode(split(number,'\-')) FROM myTable

72
11433.80
11427.14
6.66
R

我想知道有没有像explode函数一样工作的函数 但所需的输出将在列而不是行中。 这样: SELECT name, explode(split(number,'\-')) FROM myTable

Joe    72   11433.80    11427.14    6.66    R
kay    3    547.86      547.86      0.00    R
mary   12   0.49        0.49        0.00    R

增加列数而不是行数

【问题讨论】:

【参考方案1】:

我认为不存在这样的功能。但是你当然可以直接访问数组元素,一次一个,像这样:

select split(number,'\-')[0], split(number,'\-')[1], split(number,'\-')[2], split(number,'\-')[3], split(number,'\-')[4] from myTable

【讨论】:

以上是关于蜂巢爆炸功能的主要内容,如果未能解决你的问题,请参考以下文章

蜂巢句子功能如何打破每个句子

蜂巢中的Datediff功能

使用前导功能检测蜂巢列中的序列

蜂巢订单不工作

数据蜂巢架构演进之路

网易蜂巢 MongoDB服务重磅来袭