在 HIVE 中从给定的开始和结束日期创建一个序列数组
Posted
技术标签:
【中文标题】在 HIVE 中从给定的开始和结束日期创建一个序列数组【英文标题】:Create a sequence array from a given start and end date in HIVE 【发布时间】:2015-10-07 07:25:30 【问题描述】:我有一个以 id、start 和 end 作为列的数据表,例如:
标识 |开始 |结束
1 | 2011-01-01 | 2011-01-03
2 | 2011-02-13 | 2011-02-14
我想在 HIVE 中做的是将整个天范围作为一个数组添加到一个单独的列中,所以我想获得:
标识 |开始 |结束 |范围
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() 但无法正常工作。你有什么建议吗?谢谢!
【问题讨论】:
是您数据集中的天数范围还是您需要根据start
和end
生成它们?
@GoBrewers14 我需要先根据开始和结束生成它们,然后将它们插入新列中。
【参考方案1】:
我怀疑您需要创建一个自定义 UDF 来执行此操作,如果您有一些基本的 Java 知识,这并不难。请参阅此答案https://***.com/a/21197354/88839,它演示了如何从 UDF 返回数组。我还没有测试过,但如果我以后有时间我可能会试一试。
这里还有一些关于在没有 Maven 的情况下创建 UDF 的说明,但使用 Maven 可能更容易 - http://appsintheopen.com/posts/29-creating-a-basic-hive-udf
【讨论】:
以上是关于在 HIVE 中从给定的开始和结束日期创建一个序列数组的主要内容,如果未能解决你的问题,请参考以下文章
给定日期范围(开始日期和结束日期),我如何计算天数,不包括 .Net 中指定的星期几?