2013-04-26 77 views
0

每天來自oracle的'user'表都被轉儲到HDFS中。轉儲僅包含上次轉儲後所做的最新更改(插入和更新)。現在我想使用PIG將所有日常轉儲加載到關係中,並使用'userid'字段將其與Transaction文件結合。問題在於更新的記錄。同一用戶可以有多個記錄。我只想在進行連接時使用最近的用戶記錄。我們應該怎麼做。任何幫助表示讚賞。謝謝。處理Hadoop中的更新記錄

回答

0

您需要對更新文件進行分組,按日期排序並選擇第一個,然後加入。像下面的代碼應該讓你的最新更新

A = LOAD 'user_updates'...; 
A_Users = GROUP A BY user_id; 
A_TOP = FOREACH A_Users { 
    sorted = ORDER A BY update_time DESC; 
    top_one = LIMIT sorted 1; 
    GENERATE top_one; 
}; 
+0

感謝您的迴應。不是每次都這樣做,是否有增量的方式來做到這一點?當數據集變得非常大時,這可能會造成問題。有沒有比這個鏈接中提到的更好的方法http://grokbase.com/t/hive/user/10688hfg6z/how-to-apply-rdbms-table-updates-and-deletes-into-hadoop – rahul 2013-04-28 06:20:17

+0

由於更新表很小,因此您可以執行復制連接,這樣較小的表將被複制,較大的表不會移動,請參閱http://pig.apache.org/docs/r0.11.0/perf.html#Specialized -Joins – 2013-04-28 06:23:13

+0

另一種方法是將其存儲在支持隨機讀寫的HBase中(即,您可以更新更改的特定記錄) – 2013-04-28 06:24:10