0
我有一個Hive表,其中爲用戶ID我有一個ts列,這是一個時間序列,存儲爲數組。我想把時間序列保持爲最近的窗口。 (a)如何在由ID連接的另一個表中的每個列的末尾附加一個新的數字? (b)如何刪除前導號碼?如何追加到Hive數組?
我有一個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!