• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >ruby > ruby和pig处理流式文件实例

ruby和pig处理流式文件实例

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了ruby实例,ruby 实例变量,ruby,ruby碧玺,ruby woo口红等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

大数据操作中涉及到数据清洗步奏还是用脚本处理比较方便,下边介绍一下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');
</div>

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
</div>

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
</div>

其中

strmo = stream log through tra_parser;调用定义的外部程序tra_parser处理log对象。
Wukong.run ParseClick::Mapper, nil执行完后,将ruby执行结果回调pig接收。
store strmo into '$OUTFILE' using PigStorage('\t');做结果存储持久化。

</div>

您可能想查找下面的文章:

  • Ruby中访问SQL Server数据库的配置实例
  • Ruby使用C++扩展实例(含C++扩展代码示例)
  • ruby元编程实际使用实例
  • 优化Ruby脚本效率实例分享
  • Ruby中的反射(Reflection)应用实例
  • Ruby进行文件信息输出实例代码
  • ruby ftp封装实例详解
  • Ruby中钩子方法的运用实例解析
  • 实例讲解Ruby中的钩子方法及对方法调用添加钩子
  • 实例解析Ruby程序中调用REXML来解析XML格式数据的用法

相关文章

  • Ruby基础知识之数据类型
  • 21个你应该知道的Ruby编程技巧
  • Ruby实现命令行中查看函数源码的方法
  • ruby 数组使用教程
  • ruby判断一个数是否为质数(素数)示例
  • ruby实现的一个异步文件下载HttpServer实例
  • Ruby元编程之梦中情人method_missing方法详解
  • 采用UTF-8解决Ruby on Rails程序的中问题
  • Ruby 取得指定月日期数的方法
  • 使用Ruby来编写访问Twitter的命令行应用程序的教程

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Ruby实现发送邮件的两个方法
    • Ruby中的String对象学习笔记
    • win7安装ruby on rails开发环境
    • 比较详细的ruby symbol 学习资料
    • Ruby中调用执行shell命令的6种方法
    • rudy 重载方法 详解
    • Ruby中的反射(Reflection)应用实例
    • 浅析Ruby的源代码布局及其编程风格
    • 升级到mac 10.10之后使用pod出现问题的解决方法
    • 分析Cache 在 Ruby China 里面的应用情况

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有