Apache Pig:您需要了解的有關Hadoop程式語言的所有資訊
Apache Hadoop 框架的 MapReduce 程式設計模型可以處理大量的大資料資料。然而,資料分析師並不總是理解這種正規化。這就是將一個名為 Pig 的抽象新增到 Hadoop 的原因。
什麼是Apache Pig?
高階 Apache Pig 程式語言對於分析大型資料集非常有用。它最初是由雅虎內部開發的!2006 年,為了在所有資料集上建立和執行 MapReduce 作業。
選擇“pig豬”這個名字是因為這種程式語言旨在處理任何型別的資料,就像豬一樣吞噬一切。
2007 年,Pig 透過 Apache 孵化器開源。2008 年,Apache Pig 的第一個版本釋出。大獲成功,Pig 在 2010 年成為 Apache 的頂級專案。
透過使用 Apache Pig,資料分析師可以減少編寫 MapReduce 程式的時間。因此,他們可以繼續專注於分析資料集。
因此,Apache Pig 是 MapReduce 的抽象。該工具用於透過將大型資料集表示為資料流來分析大型資料集。Hadoop 上的所有資料操作操作都可以使用 Apache Pig 執行。
Apache Pig 架構
Apache Pig架構基於兩個主要元件:Pig Latin 語言和允許執行 PigLatin 程式的執行時環境。
Pig Latin 語言用於編寫資料分析程式。它提供了各種運算子,程式設計師可以使用這些運算子來開發自己的函式來讀取、寫入或處理資料。
甲豬拉丁程式在一系列變換的由或操作,適用於“輸入”資料,以產生一個“輸出”。這些操作描述了由 Hadoop Pig 執行時環境轉換為可執行表示的資料流。
要使用 Apache Pig 分析資料,程式設計師必須使用 Pig Latin 語言編寫指令碼。所有這些指令碼都在內部轉換為 Map 和 Reduce 任務。Pig Engine 元件負責將指令碼轉換為 MapReduce 作業。
然而,程式設計師甚至不知道這些工作。這就是 Pig 允許程式設計師專注於資料而不是執行的性質的方式。
Pig有兩種執行模式。本地模式在單個 JVM 上執行並使用本地檔案系統。這種模式適用於分析小資料集。
在 Map Reduce 模式下,用 Pig Latin 編寫的請求被轉換為 MapReduce 作業 並在 Hadoop 叢集上執行。後者可以部分或全部分佈。MapReduce 模式與完全分散式叢集相結合對於在大型資料集上執行 Pig 非常有用。
為什麼要使用 Apache Pig?
過去,剛接觸 Java 的程式設計師發現很難使用 Hadoop。他們執行 MapReduce 任務特別困難。
這個問題可以用 Apache Pig 解決。使用 Pig Latin 語言,程式設計師可以輕鬆地執行 MapReduce 任務,而無需在 Java 中鍵入複雜的程式碼。
此外,Apache Pig 基於“多查詢”方法,可以減少程式碼的長度。在 Java 中需要 200 行程式碼的操作可以使用 Pig 減少到僅 10 行。平均而言,Apache Pig 將開發時間除以 16。
Pig Latin 語言的一個優點是它相對接近於 SQL 語言。熟悉 SQL 的人很容易掌握 Pig。
最後,本機提供了許多運算子。它們用於支援各種資料操作。該工具還提供了 MapReduce 中缺少的資料型別,如元組、包和地圖。
Apache Pig 應用程式
通常,資料科學家使用 Apache Pig 來執行涉及 Hadoop 處理和快速原型設計的任務。它特別用於處理大量資料來源,例如網路日誌。
該工具還支援研究平臺的資料處理。最後,它有助於處理對時間敏感的資料載入。
Apache Pig的特點和優勢
以下是 Apache Pig 的主要特性和功能。Pïg 拉丁語程式語言與 SQL 類似,可以輕鬆編寫 Pig 指令碼。
大運營商會實現各種各樣的要執行的資料操作。使用者可以從這些運算子中開發自己的函式來讀取、處理和寫入資料。
這是也可以建立的UDF(使用者定義的函式)或使用者定義的函式在其他的程式語言如Java。然後可以呼叫它們或將它們整合到 Pig 指令碼中。
此外,Apache Pig 作業會自動最佳化其執行。因此,程式設計師可以只關注語言的語義。
使用 Apache Pig,可以分析所有型別的結構化或非結構化資料。分析結果儲存在 Apache Hadoop 的 HDFS 中。
Apache Pig 與 MapReduce
Apache Pig 和 MapReduce 之間有幾個主要區別。首先,MapReduce 是一種資料處理正規化,而 Pig 是一種資料流語言。
它是一種高階語言,而 MapReduce是一種低階語言。使用 MapReduce 在資料集之間執行 Join 操作很困難,而使用 Pig 則很容易。
任何具有 SQL 基礎知識的程式設計師都可以使用 Apache Pig,而MapReduce 需要精通 Java。
另一個區別涉及程式碼行的長度。由於其多查詢方法,Apache Pig 執行相同任務所需的行數比 MapReduce 少 20 倍。
最後,Mapreduce 任務涉及一個漫長的編譯過程。無需使用 Pig 進行編譯,因為每個運算子在執行時都會在內部轉換為 MapReduce 作業。
Apache Pig 與 SQL
Apache Pig 與 SQL 有一些相似之處,但也有一些不同之處。Pig Latin 是一種過程語言,而SQL 是一種宣告性語言。
此外,模式在 SQL 中是強制性的,而在 Pig 中是可選的。可以在不設計模式的情況下儲存資料。
SQL 有更多的查詢最佳化機會,而 Pig 則更有限。此外,Pig Latin 允許分解管道,將資料儲存在管道中的任何位置並執行 ETL 功能(提取、轉換、載入)。
Apache Pig 與 Hive
Apache Pig 由 Yahoo 建立,Hive 由 Facebook 建立。第一種使用 Pig Latin 語言,第二種語言使用 HiveQL,
而 Pig Latin 是一種資料流語言和一種過程語言。HiveQL 是一種查詢處理 語言,也是一種宣告性語言。
最後,Hive主要支援結構化資料。另一方面,Pig 可以支援結構化、非結構化和半結構化資料。
相關文章
- 你真的需要了解多種程式語言嗎?
- 開發者需要了解的領域特定語言(DSL)
- Apache Pig 系列 一 [PIG的安裝]Apache
- HADOOP的PIG框架Hadoop框架
- 關於低程式碼開發平臺,您需要了解這些內容。
- 2015年需要了解的前端框架和語言前端框架
- 幾乎所有程式語言的hello, world程式(1)
- 幾乎所有程式語言的hello, world程式(2)
- 幾乎所有程式語言的hello, world程式(3)
- 傳輸大檔案:您需要了解的一切
- 你需要掌握的三種程式語言
- 為什麼需要更多的程式語言
- 是否需要漢語程式語言
- [Hadoop]Pig與Hive的區別HadoopHive
- 如何掌握所有的程式語言
- 帶您走進七週七語言的程式世界
- 中國的PC遊戲:關於這個全球最大遊戲市場您需要了解的一切遊戲
- 與LINQ有關的語言特性
- Java日誌:您需要了解的4種日誌型別Java型別
- 關於機器學習需要了解的知識機器學習
- 關於 TCP 需要了解的事兒TCP
- PIG之 Hadoop 2.7.4 + pig-0.17.0 安裝Hadoop
- 大前端開發者需要了解的基礎編譯原理和語言知識前端編譯原理
- 前端的你常用的程式語言有哪些?前端
- 資訊圖:程式語言的進化過程
- 程式語言有哪些
- 關於redis,你需要了解的幾點!Redis
- Hadoop之Pig安裝Hadoop
- [Hadoop]轉載-Pig的簡單介紹Hadoop
- 論機器學習和程式語言:ML需要專用的計算機語言嗎?機器學習計算機
- 王垠:如何掌握所有的程式語言
- 王垠:關於程式語言的思考
- 關於中國人自己的程式語言!
- 有幾點關於C語言的疑問C語言
- 1.C語言有關的小學習C語言
- 有必要了解的大資料知識(二) Hadoop大資料Hadoop
- 關於 Web Workers 你需要了解的 7 件事Web
- 【譯】需要學習的是程式設計,而不是程式語言程式設計