如何追加到Hive数组?

2020年11月28日 62点热度 0条评论 来源: Alexy

我有一个Hive表,其中为用户ID我有一个ts列,这是一个时间序列,存储为数组。我想把时间序列保持为最近的窗口。 (a)如何在由ID连接的另一个表中的每个列的末尾附加一个新的数字? (b)如何删除前导号码?如何追加到Hive数组?

===========解决方案如下:

Hive中的数据通常存储在HDFS中。 HDFS具有有限的附加功能。如果数据的不断修改是分析系统的核心,那么您可能应该考虑使用HBase或Cassandra等替代方案。但是,如果数据更新只是您工作流程的一小部分,我会鼓励您继续使用Hive(为了使用SQL的功能),但应重新考虑设计以存储这些更新。

上述问题的快速解决方案是在表中为每个用户标识创建多个记录。每条记录都有一个对应于用户ID的时间序列。如果您想对时间序列进行最后一次N分析,则应在用户标识列上使用Distribute By进行选择。您的自定义缩减器将简单地挑出最后的N个(或更少,如果时间序列的大小小于N)时间戳并返回它们。

Harish Butani也为Hive中的窗口函数做了一些工作。你也可以看看his work和associated documentation以获得更多的见解。祝你好运,Alexy!

    原文作者:Alexy
    原文地址: https://stackoverflow.com/q/11371916
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。