将数据拆分为Hive中的多个列

时间:2015-12-07 09:19:36

标签: split hive

如何将数据字符串拆分为Hive表中的3个单独列?

示例输入数据:116:151:1。拆分为gid, sid, rid

必需的输出:

gid    sid     rid
116    151     1

2 个答案:

答案 0 :(得分:8)

使用split()功能。您可以在documentation中阅读它(以及所有其他Hive函数)。

<强>查询

select split("116:151:1", '\\:')[0] as gid
     , split("116:151:1", '\\:')[1] as sid
     , split("116:151:1", '\\:')[2] as rid
from database.table

<强>输出

gid    sid    rid
116    151    1

您想要替换&#34; 116:151:1&#34;使用表格中列的名称。

答案 1 :(得分:0)

使用 split + sub select 解决问题:

SELECT t.vec[0] AS gid, t.vec[1] AS sid, t.vec[2] AS rid
FROM (SELECT split("116:151:1", "[:]") AS vec) AS t;

在 hive 中生成此输出:

+------+------+------+--+
| gid  | sid  | rid  |
+------+------+------+--+
| 116  | 151  | 1    |
+------+------+------+--+

您好!