如何在Hive中的列中传播值?

时间:2016-10-25 07:10:42

标签: hive

表的一个字段由逗号分隔的许多值组成, 例如,该字段的记录是:

  

598423,4803510,599121,98181856,1666529,106317962,4061964,7828860,598752,728067,599809,8799578,1666528,3253720,601990,601235

我想在Hive中的这个字段的每个记录中传播值。 我可以用哪种功能或方法来实现这个目的? 感谢。

1 个答案:

答案 0 :(得分:1)

我不完全确定“传播”是什么意思。 如果您想要一个输出表,其每行都有一个值,如:

598423
4803510
599121

然后你可以使用explode(split(data,',')

否则,如果每个输入行只有16个数字,并且您希望每个数字都位于不同的列中,则有两个选项:

  1. 将逗号定义为输入表ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
  2. 的分隔符
  3. 使用拆分UDF将单个列拆分为16列:SELECT split(data,',')[0] as col1, split(data,',')[1] as col2, ...