从HIVE中的给定开始和结束日期创建序列数组

时间:2015-10-07 07:25:30

标签: arrays date hadoop hive

我有一个数据表,其id,start和end为列,如:

  

id |开始|端

     

1 | 2011-01-01 | 2011-01-03

     

2 | 2011-02-13 | 2011-02-14

我想在HIVE中做的是将整个天数作为一个数组添加到一个单独的列中,所以我想获得:

  

id |开始|结束|范围

     

1 | 2011-01-01 | 2011-01-03 |   [ '2011-01-01', '2011-01-02', '2011-01-03']

     

2 | 2011-02-13 | 2011-02-14 | [ '2011-02-13', '2011-02-14']

我尝试使用collect_set()但无法使其正常工作。你有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我怀疑你需要创建一个自定义UDF才能做到这一点,如果你有一些基本的Java知识,这并不难。请参阅此答案https://stackoverflow.com/a/21197354/88839,演示如何从UDF返回数组。我没有测试过,但是如果我稍后再花一些时间,我可能会试一试。

以下是关于在没有Maven的情况下创建UDF的一些说明,但使用Maven可能更容易 - http://appsintheopen.com/posts/29-creating-a-basic-hive-udf