日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop:pig 安装及入门示例

發(fā)布時(shí)間:2023/12/10 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop:pig 安装及入门示例 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

pig是hadoop的一個(gè)子項(xiàng)目,用于簡(jiǎn)化MapReduce的開(kāi)發(fā)工作,可以用更人性化的腳本方式分析數(shù)據(jù)。

一、安裝

a) 下載

從官網(wǎng)http://pig.apache.org下載最新版本(目前是0.14.0版本),最新版本可以兼容hadop 0.x /1.x / 2.x版本,直接解壓到某個(gè)目錄即可。

注:下面是幾個(gè)國(guó)內(nèi)的鏡像站點(diǎn)

http://mirrors.cnnic.cn/apache/pig/

http://mirror.bit.edu.cn/apache/pig/

http://mirrors.hust.edu.cn/apache/pig/

本文的解壓目錄是:/Users/jimmy/app/pig-0.14.0

b) 環(huán)境變量

export PIG_HOME=/Users/jimmy/app/pig-0.14.0export HADOOP_HOME=/Users/jimmy/app/hadoop-2.6.0export PIG_CLASSPATH=${HADOOP_HOME}/etc/hadoop/export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop...export PATH=${PIG_HOME}/bin:$PATH

至少要配置上面這幾項(xiàng),其它項(xiàng)比如JAVA_HOME就不必多說(shuō)了,肯定也是要的。

c) 啟動(dòng)

$PIG_HOME/bin/pig

如果能正常進(jìn)入grunt > 提示符就表示ok了

?

二、基本HDFS操作

pig的好處之一是簡(jiǎn)化了HDFS的操作,沒(méi)有pig之前要查看一個(gè)hdfs的文件,必須$HADOOP_HOME/bin/hdfs dfs -ls /input 打一堆命令,而在pig shell交互模式下,只需要

ls /input 即可

?

查看hdfs文件內(nèi)容

cat /input/duplicate.txt

跟在linux下操作完全一樣,其它命令留著大家自己去研究吧,不熟悉的可以用help查看幫助

?

三、基本的數(shù)據(jù)分析

在前面的文章?Hadoop: MapReduce2的幾個(gè)基本示例?中,我們用JAVA編程的方式演示了幾個(gè)基本例子,現(xiàn)在拿pig來(lái)實(shí)現(xiàn)一把作為對(duì)比:

a) 求Count

grunt> a = LOAD '/input/duplicate.txt' AS (value:int);

先將輸入文件加載到a中,由于輸入文件每行只有一個(gè)數(shù)字,最后的AS部分表示創(chuàng)建了一個(gè)列,名稱為value,為整型,其值就是這個(gè)數(shù)字的值。

可以用describle a; 查看結(jié)構(gòu),如果要看具體值,可以用dump a;

?

grunt> b = GROUP a all;

對(duì)a進(jìn)行分組,這里由于沒(méi)有指定分組條件,所以相當(dāng)每一行都是分組組件,這一條命令的主要作用是實(shí)現(xiàn)行轉(zhuǎn)列,執(zhí)行完以后,可以查下b的結(jié)構(gòu)和值:

?

grunt> c = FOREACH b GENERATE COUNT(a.value);

由于b只有一行了,所以上面的語(yǔ)句其實(shí)就是求該所有a.value列的個(gè)數(shù),即輸入文件的總數(shù)。

原來(lái)用MapReduce要寫一坨java代碼的工作,現(xiàn)在用PIG只要3條命令就搞定了。

?

b) 求最大值(MAX)

grunt> c = FOREACH b GENERATE MAX(a.value);

?

c) 求平均值(AVG)

grunt> c = FOREACH b GENERATE AVG(a.value);

?

d) 求和(SUM)

grunt> c = FOREACH b GENERATE SUM(a.value);

?

e) 去重復(fù)(DISTINCT)

DISTINCT的思路跟前面略有不同,關(guān)鍵在于如何分組,見(jiàn)下面的命令:

grunt> b = GROUP a by value;?

對(duì)a分組,分組依據(jù)為value值,這樣重復(fù)的值就歸到一組了,可以用dump b;看下結(jié)果:

剩下的事情就好辦了,把b的第一列取出來(lái)即可

grunt> c = FOREACH b GENERATE group;

處理完成,用dump c;查看結(jié)果

當(dāng)然,對(duì)本例而言,還有一種更簡(jiǎn)單的去重方法:
grunt> b = DISTINCT a;

?

f) WordCount

已經(jīng)有人研究過(guò)了,就直接拿來(lái)用吧,見(jiàn):http://blog.itpub.net/26495863/viewspace-1348121/

grunt> a = LOAD '/input/immortals.txt' as (line:chararray); //加載輸入文件,并按行分隔

grunt> words = FOREACH a GENERATE flatten(TOKENIZE(line)) as w; //將每行分割成單詞

grunt> g = GROUP words by w; //按單詞分組

grunt> wordcount = FOREACH g GENERATE group,COUNT(words);? //單詞記數(shù)

輸出結(jié)果 dump wordcount;

(I,4) (Of,1) (am,1) (be,3) (do,2) (in,1) (it,1) (of,1) (to,1) (we,3) (But,1) (all,1) (are,2) (bad,1) (but,1) (dog,1) (not,1) (say,1) (the,4) (way,1) (They,1) (best,1) (have,1) (what,1) (will,2) (your,1) (fever,1) (flame,1) (guard,1) (dreams,1) (eternal,1) (watcher,1) (behavior,1)

?

g) wordcount2(帶詞頻倒排序)

在剛才的示例上修改一下:
a = LOAD '/input/immortals.txt' as (line:chararray);
words = FOREACH a GENERATE flatten(TOKENIZE(line)) as w;
g = GROUP words by w;
前面這幾行都不用改
wordcount = FOREACH g GENERATE group,COUNT(words) as count;//給單詞數(shù)所在列加一個(gè)別名count
r = foreach wordcount generate count,group;//將結(jié)果列交換,將變成{count,word}這種結(jié)構(gòu)

(4,I) (1,Of) (1,am) (3,be) (2,do) (1,in) (1,it) (1,of) (1,to) (3,we) (1,But) (1,all) (2,are) (1,bad) (1,but) (1,dog) (1,not) (1,say) (4,the) (1,way) (1,They) (1,best) (1,have) (1,what) (2,will) (1,your) (1,fever) (1,flame) (1,guard) (1,dreams) (1,eternal) (1,watcher) (1,behavior)

g2 = group r by count;//按count分組

(1,{(1,behavior),(1,watcher),(1,eternal),(1,dreams),(1,guard),(1,flame),(1,fever),(1,your),(1,what),(1,have),(1,best),(1,They),(1,way),(1,say),(1,not),(1,dog),(1,but),(1,bad),(1,all),(1,But),(1,to),(1,of),(1,it),(1,in),(1,am),(1,Of)}) (2,{(2,will),(2,are),(2,do)}) (3,{(3,we),(3,be)}) (4,{(4,I),(4,the)})

x = foreach g2 generate group,r.group;//去掉無(wú)用的列

(1,{(behavior),(watcher),(eternal),(dreams),(guard),(flame),(fever),(your),(what),(have),(best),(They),(way),(say),(not),(dog),(but),(bad),(all),(But),(to),(of),(it),(in),(am),(Of)}) (2,{(will),(are),(do)}) (3,{(we),(be)}) (4,{(I),(the)})

y = order x by group desc;//按count倒排

(4,{(I),(the)}) (3,{(we),(be)}) (2,{(will),(are),(do)}) (1,{(behavior),(watcher),(eternal),(dreams),(guard),(flame),(fever),(your),(what),(have),(best),(They),(way),(say),(not),(dog),(but),(bad),(all),(But),(to),(of),(it),(in),(am),(Of)})

最后給二個(gè)網(wǎng)友整理的pig用法文章地址:

hadoop pig 入門總結(jié) http://blackproof.iteye.com/blog/1791980

pig中各種sql語(yǔ)句的實(shí)現(xiàn) http://www.open-open.com/lib/view/open1385173281604.html

總結(jié)

以上是生活随笔為你收集整理的Hadoop:pig 安装及入门示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。