hive-sql 拆分字符串

原始数据 67240036,0,150,67239980,2,20,67239980,2,20

结果
67240036,0,150
67239980,2,20
67239980,2,20

一个字段中存的 一个拼接的字符串 数据规律 是 每三个为一组 需要新拆分出 每三个一组的多行数据怎么实现啊

1.这是一串字符串 都存在一行里面
2.使用posexplode 炸裂函数,炸裂之后就是1,2,3。举一个例子。
小明,小红,小强 通过上面这个炸裂函数之后变成
小明 1
小红 2
小强 3
3.将后面的数字-1再除以3,根据除出来的结果进行分组,分组之后使用collect_set或者collect_list和concat函数进行结合。

select id,
rewards,
floor((reward_index)/3) shan,
collect_list(reward_id_split) as rewards_id,
collect_list(reward_id_split)[0] as gid,
collect_list(reward_id_split)[1] as level,
collect_list(reward_id_split)[2] as cnt
from
(select 1 as id,'67174413,0,100,67174413,0,100' as rewards) t
lateral view posexplode(split(rewards,',')) t as reward_index,reward_id_split
group by id,rewards,floor((reward_index)/3)

--结果
+---+--------------------+---+------------------+--------+-----+---+
| id| rewards|shan| rewards_split| gid|level|cnt|
+---+--------------------+---+------------------+--------+-----+---+
| 1|67174413,0,100,67...| 1|[67174413, 0, 100]|67174413| 0|100|
| 1|67174413,0,100,67...| 0|[67174413, 0, 100]|67174413| 0|100|
+---+--------------------+---+------------------+--------+-----+---+