簡體   English   中英

Hive-如何跟蹤和更新增量表中Hive中的上次修改日期?

[英]Hive - How to track and update Last Modified date in Hive for delta tables?

我有一個用例,其中Hive中的源表每天更新,以使整個數據刷新。 在第一天,我們提取了整個表,但是從第二天開始,我們只對“上次修改日期”已更新為反映前一天日期的那些行感興趣。

建議的解決方案是在第1天和第2天存儲上次修改日期的最大值,比較上次修改日期大於存儲日期的所有行,並僅處理這些行。

每天生成,存儲和檢索此最后修改日期的最佳方法是什么? 另外,不同的表將具有不同的日期,並且理想情況下,我想要一個具有Table_Name, Last_Modified_Date ,除非有更好的方法可以這樣做。

請幫忙。 謝謝。

如果我正確理解了您的情況,那么在新的每日運行中,Last_Modified_Date的值只能大於上一次運行時的Last_Modified_Date的最大值。

在這種情況下,我建議在Last_Modified_Date上創建表分區,並僅處理屬於該分區的那些記錄(這比處理您的比較要快得多)。

這種解決方案可行嗎?

  1. 從“上次修改日期”中提取日期作為新列,命名為dateid; 使用dateid作為分區鍵。
  2. 刷新整個數據時,可以將所有數據拆分到不同的分區中(此操作可以通過配置單元的動態分區功能來實現)。
  3. 然后,如果您每天都在處理數據,則可以處理最后一個dateid中的數據。

經過大量的頭腦風暴,我們決定使用中間表存儲帶有表名的“ Last Modified Date”的MAX,然后使用該表作為查找來確定要處理的新記錄。 由於我們使用的是Shell腳本,因此我想到可以使用一個變量來查詢表並獲取上次修改日期,然后使用該變量來處理新記錄/更新記錄。

描述格式化的table_name ...您將獲得transient_lastDdlTime,可以使用以下轉換。

SELECT CAST(from_unixtime(your_transient_lastDdlTime_value)AS時間戳);

感謝與問候,Kamleshkumar Gujarathi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM