使用 Apache Pig 处理数据5
使用 Apache Pig 從大數(shù)據(jù)集中獲得所需的信息
Apache Pig 是一個高級過程語言,適合于使用 Hadoop 和 MapReduce 平臺來查詢大型半結(jié)構(gòu)化數(shù)據(jù)集。通過允許對分布式數(shù)據(jù)集進行類似 SQL 的查詢,Pig 可以簡化 Hadoop 的使用。本文將探索 Pig 背后的語言,并在一個簡單的 Hadoop 集群中發(fā)現(xiàn)其用途。
Hadoop 的普及和其生態(tài)系統(tǒng)的不斷壯大并不令人感到意外。Hadoop 不斷進步的一個特殊領(lǐng)域是 Hadoop 應(yīng)用程序的編寫。雖然編寫 Map 和 Reduce 應(yīng)用程序并不十分復(fù)雜,但這些編程確實需要一些軟件開發(fā)經(jīng)驗。Apache Pig 改變了這種狀況,它在 MapReduce 的基礎(chǔ)上創(chuàng)建了更簡單的過程語言抽象,為 Hadoop 應(yīng)用程序提供了一種更加接近結(jié)構(gòu)化查詢語言 (SQL) 的接口。因此,您不需要編寫一個單獨的 MapReduce 應(yīng)用程序,您可以用 Pig Latin 語言寫一個腳本,在集群中自動并行處理與分發(fā)該腳本。
Pig Latin 示例
讓我們從一個簡單的 Pig 示例開始介紹,并剖析該示例。Hadoop 的一個有趣的用法是,在大型數(shù)據(jù)集中搜索滿足某個給定搜索條件的記錄(在 Linux? 中被稱為 grep)。清單 1 顯示了在 Pig 中實現(xiàn)該過程的簡單性。在所顯示的三行代碼中,只有一行是真正的搜索。第一行只是將測試數(shù)據(jù)集(消息日志)讀取到代表元組集合的包中。用一個正則表達式來篩選該數(shù)據(jù)(元組中的惟一條目,表示為 $0 或 field 1),然后查找字符序列 WARN。最后,在主機文件系統(tǒng)中將這個包存儲在一個名為 warnings 的新文件中,這個包現(xiàn)在代表來自消息的包含 WARN 的所有元組。
清單 1. 一個簡單的 Pig Latin 腳本
messages = LOAD 'messages'; warns = FILTER messages BY $0 MATCHES '.*WARN+.*'; STORE warns INTO 'warnings';如您所見,這個簡單的腳本實現(xiàn)了一個簡單的流,但是,如果直接在傳統(tǒng)的 MapReduce 模型中實現(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、運行pig進入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'; 保存進入文件(位于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