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 ...
随机推荐
- YUM更换源--yum找不到安装包(转)
公司提供的CentOS VM中,/etc/yum.repos.d 下 只有一个build.repo,其中提供的yum 源只有公司内部的几个源,很多包在这些源中都找不到.于是要添加别的源,下面的帖子中介 ...
- Python之路第七天,基础(9)-面向对象(上)
面向对象的编程思想 回想 我们所学过的编程方法: 面向过程:根据业务逻辑从上到下写堆叠代码. 函数式编程:将重复的代码封装到函数中,只需要写一遍,之后仅调用函数即可. 面向过程编程最易被初学者接受,其 ...
- bzoj 1188 : [HNOI2007]分裂游戏 sg函数
题目链接 给n个位置, 每个位置有一个小球. 现在两个人进行操作, 每次操作可以选择一个位置i, 拿走一个小球.然后在位置j, k(i<j<=k)处放置一个小球. 问你先进行什么操作会先手 ...
- python交换两个变量的值,一句代码搞定
a = 10 b = 20 # 不需要中间变量,一步搞定 a, b = b, a
- Problem 1008 Hay Points
Problem Description Each employee of a bureaucracy has a job description - a few paragraphs that des ...
- Oracle 修改密码 解锁
1.怎么修改oracle用户密码 在以SYSDBA身份登陆时可以修改其他用户的密码,比如: SQL> alter user 用户名 identified by 新密码; 用户已更改. 这个是把U ...
- 1.elk 入门示例
zjtest7-frontend:/usr/local/logstash-2.3.4/bin# ./logstash -e 'input{stdin{}} output{stdout{codec=&g ...
- C语言的本质(22)——C标准库之字符串操作
编译器.浏览器.Office套件等程序的主要功能都是符号处理,符号处理功能在程序中占相当大的比例,无论多复杂的符号处理都是由各种基本的字符串操作组成的,下面介绍如何用C语言的库函数做字符串初始化.取长 ...
- intro
懒得自己折腾wordpress又很想写博客. 作为一名把自己当成programmer的data scientist,毅然选择了博客园. 这里我想内容就是平时学到/使用的各种心得,更新频率不定. 兴趣范 ...
- C#字典Dictionary排序(顺序、倒序)
这里是针对.NET版本过低的排序方式,没怎么用过,记录一下: 一.创建字典Dictionary 对象 假如 Dictionary 中保存的是一个网站页面流量,key 是网页名称,值value对应的是网 ...