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 ...
随机推荐
- java性能优化技巧
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. 1. 尽量使用final修饰符. 带有final修饰符的类是不可派生的. ...
- SQL Server 存储过程自启动
前期准备: use master; create table LoginLog(LoginName nvarchar(32),LoginTime datetime); create procedure ...
- MVC 后台DataTable 前台遍历
/// <summary> /// 多级审批流展示 /// </summary> /// <returns></returns> public Acti ...
- 如何自定义MVC控件?
今天公司要写学习总结,想着想着还是先写一篇关于MVC内部什么东东的博客整理整理再发表吧,一举两得. 之前写过了路由.过滤器等.今天就研究一下怎么自定义MVC控件吧. 本人技术小菜,不喜勿喷.....( ...
- 红外遥控系统原理及单片机软件解码程序,我的编写经历(C版本)
应该说现在每一块开发板都带有红外模块,并且大都配置了相应的程序.但其实自己动手写解码程序,更能锻炼自己所学,且不谈程序写的如何,这个过程中肯定是受益良多的.现在我就把我花一下午写出的解码程序与大家分享 ...
- MFC 操作控件数据
在MFC中有多种获取控件数据的方法 1.GetWindowText()和SetWindowText()函数 ],ch2[],ch3[]; GetDlgItem(IDC_EDIT1)->Get ...
- Boost 1.61.0 Library Documentation
http://www.boost.org/doc/libs/1_61_0/ Boost 1.61.0 Library Documentation Accumulators Framework for ...
- 2014第7周四excel多列文本复制技巧
刚才win8.1强制安装更新后重启,然后一直显示“安装更新失败正在,正在撤销更改,请不要关闭计算机”,等了很久还是不行,我还是强制按下了电源按钮,然后再次开机还是这样,实在没办法只能等,过了N久后没想 ...
- Android常用代码
1.图片旋转 Bitmap bitmapOrg = BitmapFactory.decodeResource(this.getContext().getResources(), R.drawable. ...
- Google map v3 using simple tool file google.map.util.js v 1.1
/** * GOOGLE地图开发使用工具 * @author BOONYACHENGDU@GMAIL.COM * @date 2013-08-23 * @notice 地图容器的z-index不能小于 ...