婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ruby和pig處理流式文件實例

ruby和pig處理流式文件實例

熱門標簽:漯河電銷 巫師3地圖標注魔力之所 外呼線路從哪里出來的 淮安自動外呼系統供應商 天津外呼系統怎么收費 征服者企業地圖標注 中牟外呼系統違法嗎 AI電銷機器人 線路 柯城手機地圖如何做地圖標注

大數據操作中涉及到數據清洗步奏還是用腳本處理比較方便,下邊介紹一下pig加載hdfs文件后調用ruby腳本處理數據,再返回數據流至pig中處理的一個簡單案例。

注意:ruby的流式處理用到wukong這個gem包,相關下載:
https://github.com/mrflip/wukong

pig中加載分布式文件調用ruby流式處理:

復制代碼 代碼如下:

log = load '$INFILE' using PigStorage('\t');

define tracking_parser `/usr/ruby parse_click.rb --map` SHIP('parse_click.rb', 'click_tracking.rb');

strmo = stream log through tra_parser;

store strmo into '$OUTFILE' using PigStorage('\t');

復制代碼 代碼如下:

require 'wukong'
require 'json'
require './click_tra.rb'

module ParseClick
  class Mapper Wukong::Streamer::RecordStreamer
    def before_stream
      @bad_count = 0
    end

    def after_stream
      raise RuntimeError, "Exceeded bad records : #{@bad_count}" if @bad_count > 10
    end

    def process *records
      yield ClickTra.new(JSON.parse(records[2])).to_a
    rescue => e
      @bad_count += 1
      warn "Bad record #{e}: #{records[2]}"
    end
  end
end

Wukong.run ParseClick::Mapper, nil

復制代碼 代碼如下:

require 'date'
require './models.rb'

class ClickTra
 
  output :ip
  output :c_date
  #output your other atrributes

  def c_date
    click_date.strftime("%Y%m%d").to_i
  end 

  def ip
    browser_ip.to_i
  end

end

其中

strmo = stream log through tra_parser;調用定義的外部程序tra_parser處理log對象。
Wukong.run ParseClick::Mapper, nil執行完后,將ruby執行結果回調pig接收。
store strmo into '$OUTFILE' using PigStorage('\t');做結果存儲持久化。

標簽:內江 大慶 甘孜 河池 西雙版納 克拉瑪依 棗莊 南昌

巨人網絡通訊聲明:本文標題《ruby和pig處理流式文件實例》,本文關鍵詞  ruby,和,pig,處理,流式,文件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ruby和pig處理流式文件實例》相關的同類信息!
  • 本頁收集關于ruby和pig處理流式文件實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 陆良县| 外汇| 普兰县| 会同县| 崇信县| 新竹县| 紫金县| 丹巴县| 汶上县| 常熟市| 锦屏县| 罗江县| 休宁县| 张北县| 黄梅县| 东宁县| 集贤县| 浦北县| 盘锦市| 许昌县| 兰考县| 安多县| 高唐县| 龙口市| 四川省| 太保市| 冀州市| 申扎县| 宾川县| 高陵县| 达拉特旗| 田林县| 四会市| 柏乡县| 宜良县| 烟台市| 平和县| 青海省| 房山区| 贵南县| 洛阳市|