transform Vs Udf

丫丫GoUp發表於2018-08-16

在鞋廠的第一個任務,拆表。需要把訂單表按照開始日期和結束日期拆分成多條記錄,挺新鮮的~

transform方式,使用到了python。

(1)把hive表的資料傳入,通過python按照日期迴圈處理,返回多條記錄。

(2)生成序列表,然後採用cross join的方式,在hive端生成多條記錄,再根據日期和序列進行處理。

udf方式,更容易操作,我個人習慣使用Java。udf傳入開始日期和結束日期,返回時間範圍的陣列。

再通過lateral view的方式處理。

 

另外,針對這個需求,對比了crossjoin的方式(用python先生成序列表)和udf:

1)效率:序列表為1-100的情況,執行時間28分鐘,序列表1000情況,排程卡住;

           udf計算日誌一個分割槽全量情況,執行時間20分鐘,剔除無效資料後,執行時間約4分鐘。

2)udf不需要做寫操作,減少了儲存使用。

3)使用udf,sql程式碼量少,且具有通用性。

相關文章