Apache Pig:您需要了解的有關Hadoop程式語言的所有資訊

banq發表於2021-12-24

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 可以支援結構化、非結構化和半結構化資料。
 
 

相關文章