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 ...
随机推荐
- Kali Linux 新手折腾笔记
http://defcon.cn/1618.html 2014年09月29日 渗透测试 暂无评论 阅读 55,052 次 最近在折腾Kali Linux 顺便做一简单整理,至于安装就不再多扯了,估 ...
- Financial Management--hdu1064
Financial Management Problem Description Larry graduated this year and finally has a job. He’s makin ...
- Oracle EBS-SQL (QA-2):检查接收未检验.SQL
SELECT rsh.receipt_num 收据号, pov.vendor ...
- Intuit Quicken Home & Business 2016(Manage your business and personal finances)
Quicken Home & Business 2016 - Manage your business and personal finances all in one place. Cate ...
- (八)boost库之异常处理
(八)boost库之异常处理 当你面对上千万行的项目时,当看到系统输出了异常信息时,你是否想过,如果它能将文件名.行号等信息输出,该多好啊,曾经为此绞尽脑汁. 今天使用boost库,将轻松的解决这个问 ...
- 关于GPS偏移的基础知识
转载地址 我们平时用到的地球坐标系统,叫做WGS84坐标,国家保密插件,也叫做加密插件或者加偏或者SM模组,其实就是对真实坐标系统进行人为的加偏处理,按照几行代码的算法,将真实的坐标加密成虚假的坐标, ...
- 这是一个hibernate 联合主键的例子
package com.bird.entity; import java.io.Serializable; import javax.persistence.Entity; import javax. ...
- Iptabels详解
http://www.07net01.com/2016/02/1291283.html Iptabels是与linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的 ...
- android 实现自己定义状态栏通知(Status Notification)
在android项目的开发中,有时为了实现和用户更好的交互,在通知栏这一小小的旮旯里,我们通常须要将内容丰富起来,这个时候我们就须要去实现自己定义的通知栏,比如以下360或者网易的样式: 首先我们要了 ...
- CSS3中的弹性流体盒模型技术详解
先回顾一下CSS1 和 CSS2中都已经定义了哪些布局方面的属性,这样也会增加我们理解弹性布局. 其实我们现在有很多一部分人,你们刚刚接触CSS层叠样式表,或者接触有一段时间了,但是却没有很好的去 ...