如何将数据字符串拆分为Hive表中的3个单独列?
示例输入数据:116:151:1
。拆分为gid, sid, rid
。
必需的输出:
gid sid rid
116 151 1
答案 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 |
+------+------+------+--+
您好!