`

ruby接收pig流式处理文件内容

 
阅读更多
大数据操作中涉及到数据清洗步奏还是用脚本处理比较方便,下边介绍一下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');做结果存储持久化。
0
0
分享到:
评论

相关推荐

    ruby和pig处理流式文件实例

    大数据操作中涉及到...pig中加载分布式文件调用ruby流式处理: 代码如下: log = load ‘$INFILE’ using PigStorage(‘\t’); define tracking_parser `/usr/ruby parse_click.rb –map` SHIP(‘parse_click.rb’,

    用ruby读excel文件生成xml文件

    标题 "用ruby读excel文件生成xml文件" 描述的是一项技术任务,即使用Ruby编程语言来处理Excel文件,并将其内容转换成XML格式。这在数据迁移、格式转换或与不支持Excel格式的应用程序进行数据交换时非常有用。Ruby库...

    ruby下将txt文件内容写入excel

    使用RUBY语言将TXT文件中的内容写入到excel中!

    The Ruby Way(处理文件和目录)

    ### Ruby中的文件与目录处理 #### 10.1 处理文件和目录 计算机的主要功能之一就是处理数据,这不仅包括内部计算,还包括输入输出(I/O)操作,即与外部世界的交互。Ruby作为一种现代的编程语言,为用户提供了一套...

    ruby 读取cfg文件

    在本篇文章中,我们将深入探讨如何在Ruby中有效地读取和处理cfg文件,以及如何根据指定的键来获取对应的值。 首先,让我们了解cfg文件。Cfg文件是一种文本文件,常用于存储应用程序的配置信息,如设置、选项或参数...

    使用Ruby来处理文本的教程

    比如CSV(逗号分隔值),经常用来存储表格数据,Ruby提供了CSV模块来读取和写入CSV文件。在处理XML数据时,Ruby的REXML库能够解析和生成XML文档,支持XML数据的提取和操作。 总的来说,Ruby是处理文本数据的强大...

    ruby上传文件

    9. **Carrierwave或Paperclip**:这两个是Ruby社区广泛使用的文件上传库,它们提供了处理文件上传、缩略图生成、版本控制等功能,简化了开发流程。 10. **Validation**:在保存文件信息到数据库之前,你可能需要...

    ruby脚本递归处理指定路径下的文件

    该脚本可以扫描指定路径,将符合条件的文件全部找出。你可以添加自己的函数来处理符合条件的文件。如删除某个文件夹里的所有特定文件

    ruby实现文件对比资料

    在Ruby编程语言中,文件对比是一项常见的任务,尤其在处理文本文件、代码比较或日志分析时。本文将深入探讨如何使用Ruby实现文件对比,并提供相关的实例和技巧,帮助你编写出自己的文件对比脚本或生成对比报告。 一...

    ruby写的命令行操作文件系统(初学)

    `File`类是Ruby中的核心类,用于处理文件的相关操作。以下是一些常用方法: 1. **创建文件**:`File.open("filename.txt", "w") { |file| file.write("Hello, World!") }` 这行代码会创建一个名为`filename.txt`的...

    Ruby读写txt文件

    在处理文本数据时,如读写txt文件,Ruby提供了简洁而直观的API。下面将详细介绍Ruby如何进行txt文件的读写操作。 一、打开和关闭文件 在Ruby中,我们通常使用`File`类的方法来操作文件。读取txt文件时,可以使用`...

    Ruby-Mailman一个Ruby邮件接收处理微框架

    **Ruby-Mailman:一个高效的邮件接收与处理框架** Ruby-Mailman 是一个专门为 Ruby 开发者设计的轻量级邮件处理微框架。它旨在简化邮件服务器接收到的电子邮件的处理流程,帮助开发者构建邮件相关的应用程序,如...

    ruby导出csv文件

    要从Ruby程序中导出数据到CSV文件,我们可以利用`FasterCSV`库,它为处理CSV文件提供了高效且灵活的方法。尽管在Ruby 1.9及更高版本中,`FasterCSV`已经被`csv`标准库所取代,但在某些情况下,开发者可能仍选择使用`...

    Ruby读取INI文件

    Ruby是一种动态且灵活的编程语言,它在处理各种文件格式时提供了丰富的库支持。当我们谈论“Ruby读取INI文件”时,我们指的是使用Ruby代码解析和操作INI配置文件。INI文件是一种简单的文本文件格式,常用于存储软件...

    Ruby Ini文件读写

    Ruby Ini文件读写是Ruby编程语言中处理配置文件的一种常见方式。INI文件是一种简单的文本格式,通常用于存储程序的配置信息,以键值对的形式组织数据。Ruby提供了多种库来帮助开发者轻松地读取和写入这些文件,使得...

    Ruby2.5.3编译后的文件+其他文件

    Ruby在某些操作,如处理.gemspec文件或某些扩展时,可能会用到zlib。不过,由于这个版本的Ruby编译时没有包含zlib,这意味着你可能需要单独安装zlib库来实现这些功能。 4. **VC2017编译**:这意味着Ruby 2.5.3是...

    Ruby-rubyserver标准文件协议的生产就绪实现

    "Ruby-rubyserver标准文件协议的生产就绪实现" 提到的是一个专门针对Ruby实现的、遵循标准文件协议的服务器解决方案,适用于生产环境。这种实现确保了在高并发和稳定性的需求下,服务器依然能高效、可靠地运行。 1....

    ruby打包文件ruby入门通

    ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件

    ruby实现邮件收发

    在Ruby编程语言中,实现邮件的收发是常见的任务,主要涉及到SMTP(Simple Mail Transfer Protocol)和POP(Post Office Protocol)协议。以下是对标题和描述中提到的知识点的详细解释。 1. **通过SMTP发送Email** ...

    ruby库帮助文件

    ruby的库帮助文件,对于Ruby开发者应该必备的工具

Global site tag (gtag.js) - Google Analytics