hive transform函數介紹


hive 提供了通過腳本定制 mapper 和 reducer 的功能,這一功能需要用到 transform 函數。

默認情況下, transform 函數中帶入的參數會被用 '\t 分隔開,並且以字符串對方式傳入到用戶腳本中。輸入中 NULL 值會被轉換成字符串 '\N'。腳本的輸出使用的分隔符也是 '\t',同時 '\N' 會再次被轉化為 NULL。需要注意的是,當 transform 當參數中含有 '\t' 的時候,用戶需要手動處理這些 '\t' 以免腳本里面出錯。這里是一個使用樣例:

FROM (
  FROM pv_users
  TRANSFORM(pv_users.userid, pv_users.date)
  USING 'map_script'
  AS dt, uid
  CLUSTER BY dt) map_output
INSERT OVERWRITE TABLE pv_users_reduced
  TRANSFORM(map_output.dt, map_output.uid)
  USING 'reduce_script'
  AS date, count;

'map_script' 的輸出,使用 '\t' 分割開以后,對應到 dt 和 uid 兩個字段。默認情況下,如果不指定類型,默認認為是 string 類型的。

這樣一來,就通過腳本(shell、python等)實現了UDF的功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM