我有一个Hive表,其中对于用户ID我有一个ts列,它是一个时间序列,存储为数组。我想将时间序列保持为最近的窗口。
(a)如何在ID加入的另一个表的每一列的末尾添加一个新数字? (b)如何删除前导号码?
答案 0 :(得分:0)
Hive中的数据通常存储在HDFS中。 HDFS具有有限的附加功能。如果数据的不断修改是您的分析系统的核心,那么您可能应该考虑使用HBase或Cassandra等替代方案。
但是,如果数据更新只是工作流程的一小部分,我建议您继续使用Hive(为了利用它的SQL功能),但重新考虑您的设计以存储这些更新。
上述问题的快速解决方案是在表格中为每个用户ID设置多条记录。每条记录都有一个与用户ID相对应的时间序列。如果要对时间序列进行最后N次分析,则应在“用户ID”列上使用Distribute By从表中进行选择。您的自定义缩减器将简单地选出最后N个(或更少,如果时间序列的大小小于N)时间戳并返回它们。
Harish Butani还在Hive中对Windowing功能做了一些工作。您还可以查看his work和associated documentation以获得更多信息。祝你好运,Alexy!