使用 Apache Pig 处理数据5
使用 Apache Pig 從大數(shù)據(jù)集中獲得所需的信息
Apache Pig 是一個(gè)高級(jí)過程語言,適合于使用 Hadoop 和 MapReduce 平臺(tái)來查詢大型半結(jié)構(gòu)化數(shù)據(jù)集。通過允許對(duì)分布式數(shù)據(jù)集進(jìn)行類似 SQL 的查詢,Pig 可以簡化 Hadoop 的使用。本文將探索 Pig 背后的語言,并在一個(gè)簡單的 Hadoop 集群中發(fā)現(xiàn)其用途。
Hadoop 的普及和其生態(tài)系統(tǒng)的不斷壯大并不令人感到意外。Hadoop 不斷進(jìn)步的一個(gè)特殊領(lǐng)域是 Hadoop 應(yīng)用程序的編寫。雖然編寫 Map 和 Reduce 應(yīng)用程序并不十分復(fù)雜,但這些編程確實(shí)需要一些軟件開發(fā)經(jīng)驗(yàn)。Apache Pig 改變了這種狀況,它在 MapReduce 的基礎(chǔ)上創(chuàng)建了更簡單的過程語言抽象,為 Hadoop 應(yīng)用程序提供了一種更加接近結(jié)構(gòu)化查詢語言 (SQL) 的接口。因此,您不需要編寫一個(gè)單獨(dú)的 MapReduce 應(yīng)用程序,您可以用 Pig Latin 語言寫一個(gè)腳本,在集群中自動(dòng)并行處理與分發(fā)該腳本。
Pig Latin 示例
讓我們從一個(gè)簡單的 Pig 示例開始介紹,并剖析該示例。Hadoop 的一個(gè)有趣的用法是,在大型數(shù)據(jù)集中搜索滿足某個(gè)給定搜索條件的記錄(在 Linux? 中被稱為 grep)。清單 1 顯示了在 Pig 中實(shí)現(xiàn)該過程的簡單性。在所顯示的三行代碼中,只有一行是真正的搜索。第一行只是將測(cè)試數(shù)據(jù)集(消息日志)讀取到代表元組集合的包中。用一個(gè)正則表達(dá)式來篩選該數(shù)據(jù)(元組中的惟一條目,表示為 $0 或 field 1),然后查找字符序列 WARN。最后,在主機(jī)文件系統(tǒng)中將這個(gè)包存儲(chǔ)在一個(gè)名為 warnings 的新文件中,這個(gè)包現(xiàn)在代表來自消息的包含 WARN 的所有元組。
清單 1. 一個(gè)簡單的 Pig Latin 腳本
messages = LOAD 'messages'; warns = FILTER messages BY $0 MATCHES '.*WARN+.*'; STORE warns INTO 'warnings';如您所見,這個(gè)簡單的腳本實(shí)現(xiàn)了一個(gè)簡單的流,但是,如果直接在傳統(tǒng)的 MapReduce 模型中實(shí)現(xiàn)它,則需要增加大量的代碼。這使得學(xué)習(xí) Hadoop 并開始使用數(shù)據(jù)比原始開發(fā)容易得多。
現(xiàn)在讓我們更深入地探討 Pig 語言,然后查看該語言的一些功能的其他示例。
示例演示:
1、準(zhǔn)備數(shù)據(jù)
messages文件 內(nèi)容(含有兩條WARN的)
This is WARNING message1
This is INFOING message2
This is WARNING message3
2、上傳數(shù)據(jù)
hadoop dfs -put messages /input
3、運(yùn)行pig進(jìn)入grunt
grunt> messages = load '/input/messages';
grunt> warns = filter messages by $0 matches '.*WARN+.*';
grunt> dump warns
(This is WARNING message1)
(This is WARNING message3)
grunt> store warns into '/output/wranings'; 保存進(jìn)入文件(位于hdfs上)
?
參考:http://www.ibm.com/developerworks/cn/linux/l-apachepigdataquery/index.html?
?
轉(zhuǎn)載于:https://www.cnblogs.com/jsunday/p/3789690.html
總結(jié)
以上是生活随笔為你收集整理的使用 Apache Pig 处理数据5的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WebBrowser!
- 下一篇: git - svn 平滑到 git