Pig On Mac
Install
首先是 Mac OS 下的安装
1 |
export JAVA_HOME=$(/usr/libexec/java_home) |
Run
Pig 运行分为两种模式,如果需要在本地调试的话,可以使用 shell 模式。
通过运行下面的 command 就行了
Shell mode
1 |
pig -x local |
Count Words
下面我们用个简单的统计单词次数的例子做进入 pig 世界的 hello world。
首先我们在网上随便找一篇文章做实验。
word.txt
1 |
Thanks again for the great answers and links! Some people comment that it is hard to satisfy the criteria because core algorithms are |
接下来我们进入 shell 模式,一行行输入下面的语句来看结果。
1 |
input_file = load 'words.txt' as (line); /* TOKENIZE: split line into word column */ |
最后键入 dump cntd 的时候可以看到单词数目已经统计出来了
1 |
(answers,1) |
More Complicate Example
Pig 作为一简单实用的 hadoop 操作语言,同 SQL 的语法类似,支持 join, filter, group by 等操作.
下面我们用个更复杂的例子来看看这门语言的有趣的地方。
我们首先伪造一部分数据,这些数据以空格分开
- 第一行代表用户id
- 第二行 type: 其中 p 代表用户看过改页面,c 代表用户点击广告
- 第三行 用户看过的url
1 |
user1 p news.21cn.com/social/daqian/2008/05/29/4777194_1.shtml |
首先我们想统计每个用户在我们的log 中发生了多少次行为。
1 |
Users = LOAD 'server_log.txt' USING PigStorage(' ') as (user ,type ,url) ; /* filter bad log */ |
输出如下:
1 |
(user1,4) |
如果我们想更进一步,查看每个用户发生了多少次click 和多少次 page view. 则稍显麻烦。
首先我们要把page event 和 click event 分开,这可以通过 pig 的 split 实现。
接着针对分开的 P_EVENT 和 C_EVENT 做 Group。
最后在使用 Join 命令把 Cntd_P 和 Cntd_C 按用户 join 起来。
1 |
Users = LOAD 'server_log.txt' USING PigStorage(' ') as (user ,type ,url) ; Fltrd = FILTER Users by url is not null; SPLIT Fltrd INTO P_EVENT if type == 'p', |
Tips
总体来看 pig 作为一门类 SQL 语言,其灵活性和方便性在处理较为简单的大数据任务时,相比传统的 hadoop job 有着不可比拟的优势。
但 pig 也有缺点,比如 debug 信息不明确等。
在日常写 pig 脚本时,可以通过 Describe 的方式来查看当前结果的结构来方便编码。
Pig On Mac的更多相关文章
- hadoop: hive 1.2.0 在mac机上的安装与配置
环境:mac OS X Yosemite + hadoop 2.6.0 + hive 1.2.0 + jdk 1.7.0_79 前提:hadoop必须先安装,且处于运行状态(伪分式模式或全分布模式均可 ...
- 总结:Mac前端开发环境的搭建(配置)
新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...
- JAVA for mac 的学习之路
要学习一门新技术,首先得下载相关的工具. 一 . 下载相关工具 1. 下载 jdk formac 下载地址为:http://www.oracle.com/technetwork/java/javase ...
- docker for mac 学习记录
docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- mac下安装及配置tomcat
mac下的软件不像windows下的程序那样写注册表,对于tomcat的安装来说,在mac下是名符其实的绿色软件,具体操作如下: 1.到 apache官方主页 下载完整 tar.gz文件包.(没有专门 ...
- Mac OS 使用 Vagrant 管理虚拟机(VirtualBox)
Vagrant(官网.github)是一款构建虚拟开发环境的工具,支持 Window,Linux,Mac OS,Vagrant 中的 Boxes 概念类似于 Docker(实质是不同的),你可以把它看 ...
- Mac OS、Ubuntu 安装及使用 Consul
Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...
- MAC Osx PHP安装指导
php.ini的位置 Mac OS X中没有默认的php.ini文件,但是有对应的模版文件php.ini.default,位于/private/etc/php.ini.default 或者说 /etc ...
随机推荐
- PHP解决网站高流量高并发问题
首先,确认服务器硬件是否足够支持当前的流量. 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻 ...
- SQL Server 文件自动增长那些事
方法 1. 把文件的增长设置为按照固定大小增长. 如filegrowth = 100MB; ------------------------------------------------------ ...
- Sql Server专题一:索引(下)
首先这次的内容是全文索引,跟前面讲的其实没有多大关系 两种索引的功能和结构都是不同的,普通索引的结构主要以B+树和哈希索引为主,用于实现对字段中数据的精确查找,比如查找某个字段值等于给定值的记录,A= ...
- 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法
单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...
- Mysql 利用multiline 实现多行匹配
<pre name="code" class="html">input { file { type => "zj_mysql&quo ...
- (八)boost库之异常处理
(八)boost库之异常处理 当你面对上千万行的项目时,当看到系统输出了异常信息时,你是否想过,如果它能将文件名.行号等信息输出,该多好啊,曾经为此绞尽脑汁. 今天使用boost库,将轻松的解决这个问 ...
- OSCHina技术导向:Java模板引擎velocity
OSChina 采用 velocity 作为页面模板 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template langua ...
- Java实现二叉搜索树的添加,前序、后序、中序及层序遍历,求树的节点数,求树的最大值、最小值,查找等操作
什么也不说了,直接上代码. 首先是节点类,大家都懂得 /** * 二叉树的节点类 * * @author HeYufan * * @param <T> */ class Node<T ...
- mongodb导出命令
./mongoexport -d admin -c col -o col.json 找到了 导出所有数据库的 http://www.jb51.net/article/52498.htm
- jQuery--checkbox全选/取消全选
用JavaScript使页面上的一组checkbox全选/取消全选,逻辑很简单,实现代码也没有太难的语法.但使用jQuery实现则更简单,代码也很简洁,精辟! jQuery版本:1.3.2 <h ...