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