grunt> grp_shell = GROUP passwd BY shell; grunt> DUMP grp_shell; (/bin/bash,{(cloudera,x,500,500,,/home/cloudera,/bin/bash),(root,x,0,0,...), ...})
(/bin/sync,{(sync,x,5,0,sync,/sbin,/bin/sync)})
(/sbin/shutdown,{(shutdown,x,6,0,shutdown,/sbin,/sbin/shutdown)})
grunt> |
</tr>
</tbody>
</table>
但是,您想要的是在 passwd 文件中指定的獨特外殼的計數。所以,需要使用 FOREACH
運算符來遍歷分組中的每個元組,COUNT
出現的數量(參見 清單 8)。
清單 8. 利用每個外殼的計數對結果進行分組
grunt> counts = FOREACH grp_shell GENERATE group, COUNT(passwd); grunt> DUMP counts; ...
(/bin/bash,5)
(/bin/sync,1)
(/bin/false,1)
(/bin/halt,1)
(/bin/nologin,27)
(/bin/shutdown,1)
grunt> |
</tr>
</tbody>
</table>
備注:如果要將該代碼作為一個腳本來執行,只需將腳本輸入到某個文件中,然后使用 pig myscript.pig
來執行它。
診斷運算符
Pig 支持大量診斷運算符,您可以用它們來調試 Pig 腳本。正如您在之前的腳本示例中所看到的,DUMP
運算符是無價的,它不僅可以查看數據,還可以查看數據架構。您還可以使用 DESCRIBE
運算符來生成一個關系架構的詳細格式(字段和類型)。
EXPLAIN
運算符更復雜一些,但也很有用。對于某個給定的關系,您可以使用 EXPLAIN
來查看如何將物理運算符分組為 Map 和 Reduce 任務(也就是說,如何推導出數據)。
表 2 對 Pig Latin 中的診斷運算符及其描述提供了一個列表。
表 2. Pig Latin 診斷運算符
運算符 |
描述 |
</tr>
DESCRIBE |
返回關系的架構。 |
</tr>
DUMP |
將關系的內容轉儲到屏幕。 |
</tr>
EXPLAIN |
顯示 MapReduce 執行計劃。 |
</tr>
</tbody>
</table>
用戶定義的函數
雖然 Pig 在本文探討的范圍內是強大且有用的,但是通過用戶定義的函數 (UDF) 可以使它變得更強大。Pig 腳本可以使用您為解析輸入數據、格式化輸出數據甚至運算符等定義的函數。UDF 是用 Java 語言編寫的,允許 Pig 支持自定義處理。UDF 是將 Pig 擴展到您的特定應用程序領域的一種方式。您可以在 參考資料 中了解有關 UDF 開發的更多信息。
Pig 用戶
正如您從這篇短文中可以看到的,Pig 是一個強大的工具,可以在 Hadoop 集群中查詢數據。它是如此強大,Yahoo! 估計,其 Hadoop 工作負載中有 40% 至 60% 由 Pig Latin 腳本產生。在 Yahoo! 的 100,000 個 CPU 中,大約有 50% 的 CPU 仍在運行 Hadoop。
但 Yahoo! 并不是利用 Pig 的惟一組織。您在 推ter 中也會發現 Pig(用于處理日志和挖掘微博數據);在 AOL 和 MapQuest 上也會發現它(用于分析和批量數據處理);而在 LinkedIn 上,Pig 用于發現您可能認識的人。據報道,Ebay 使用 Pig 來實現搜索優化,而 adyard 的推薦工具系統有大約一半都使用了 Pig。
展望未來
沒有一本書可以完全列舉 Pig 背后處理大數據的強大功能。即使對于非開發人員而言,Pig 也可以使得執行 Hadoop 集群上的大數據處理變得很容易。Pig 最初是由 Yahoo! 于 2006 年開發,并且此后不久被遷移到 Apache Software Foundation,使得它在全球范圍得到廣泛應用。進行這種遷移是因為 Yahoo! 研究人員意識到 Pig 能為非開發人員提供強大的功能。Hadoop 作為一個基礎架構已經逐漸開始普及,Hadoop 生態系統將會改變大數據的外觀及其日益增長的使用情況。
文章出處: IBM developerWorks
本文由用戶
openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
sesese色