hive transform函數介紹

hive 提供了經過腳本定製 mapper 和 reducer 的功能,這一功能須要用到 transform 函數。python

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

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 類型的。app

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

相關文章
相關標籤/搜索