Apache Pig - 概述



什麼是 Apache Pig?

Apache Pig 是 MapReduce 之上的一個抽象層。它是一個用於分析大型資料集並將其表示為資料流的工具/平臺。Pig 通常與Hadoop一起使用;我們可以使用 Apache Pig 在 Hadoop 中執行所有資料操作。

為了編寫資料分析程式,Pig 提供了一種高階語言,稱為Pig Latin。這種語言提供了各種運算子,程式設計師可以使用這些運算子來開發自己的函式,用於讀取、寫入和處理資料。

為了使用Apache Pig分析資料,程式設計師需要使用 Pig Latin 語言編寫指令碼。所有這些指令碼在內部都被轉換為 Map 和 Reduce 任務。Apache Pig 有一個稱為Pig Engine的元件,它接受 Pig Latin 指令碼作為輸入,並將這些指令碼轉換為 MapReduce 作業。

為什麼我們需要 Apache Pig?

那些不太擅長 Java 的程式設計師通常在使用 Hadoop 時會遇到困難,尤其是在執行 MapReduce 任務時。Apache Pig 對所有這些程式設計師來說都是一個福音。

  • 使用Pig Latin,程式設計師可以輕鬆地執行 MapReduce 任務,而無需在 Java 中鍵入複雜的程式碼。

  • Apache Pig 使用多查詢方法,從而減少了程式碼長度。例如,在 Java 中需要鍵入 200 行程式碼 (LoC) 的操作,在 Apache Pig 中只需鍵入 10 行程式碼即可輕鬆完成。最終,Apache Pig 將開發時間縮短了近 16 倍。

  • Pig Latin 是一種類似 SQL 的語言,如果您熟悉 SQL,那麼學習 Apache Pig 就很容易。

  • Apache Pig 提供許多內建運算子來支援資料操作,例如連線、過濾、排序等。此外,它還提供諸如元組、包和對映之類的巢狀資料型別,而 MapReduce 中則缺少這些型別。

Pig 的特性

Apache Pig 具有以下特性:

  • 豐富的運算子集 - 它提供了許多運算子來執行連線、排序、過濾等操作。

  • 易於程式設計 - Pig Latin 類似於 SQL,如果您擅長 SQL,那麼編寫 Pig 指令碼就很容易。

  • 最佳化機會 - Apache Pig 中的任務會自動最佳化其執行,因此程式設計師只需要關注語言的語義。

  • 可擴充套件性 - 使用者可以使用現有運算子來開發自己的函式,用於讀取、處理和寫入資料。

  • UDF - Pig 提供了在其他程式語言(如 Java)中建立使用者定義函式並在 Pig 指令碼中呼叫或嵌入它們的功能。

  • 處理各種資料 - Apache Pig 分析各種資料,包括結構化資料和非結構化資料。它將結果儲存在 HDFS 中。

Apache Pig 與 MapReduce 的比較

以下是 Apache Pig 和 MapReduce 之間的區別:

Apache Pig MapReduce
Apache Pig 是一種資料流語言。 MapReduce 是一種資料處理範例。
它是一種高階語言。 MapReduce 是低階且僵化的。
在 Apache Pig 中執行連線操作非常簡單。 在 MapReduce 中,在資料集之間執行連線操作非常困難。
任何具有 SQL 基礎知識的新手程式設計師都可以方便地使用 Apache Pig。 必須瞭解 Java 才能使用 MapReduce。
Apache Pig 使用多查詢方法,從而在很大程度上減少了程式碼長度。 MapReduce 將需要近 20 倍的行數才能執行相同的任務。
無需編譯。執行時,每個 Apache Pig 運算子都會在內部轉換為 MapReduce 作業。 MapReduce 作業具有漫長的編譯過程。

Apache Pig 與 SQL 的比較

以下是 Apache Pig 和 SQL 之間的區別:

Pig SQL
Pig Latin 是一種過程式語言。 SQL 是一種宣告式語言。
在 Apache Pig 中,模式是可選的。我們可以不設計模式就儲存資料(值儲存為 $01、$02 等)。 SQL 中模式是必需的。
Apache Pig 中的資料模型是巢狀關係型的。 SQL 中使用的資料模型是扁平關係型的。
Apache Pig 提供有限的查詢最佳化機會。 SQL 中有更多查詢最佳化的機會。

除了以上區別之外,Apache Pig Latin:

  • 允許在管道中進行拆分。
  • 允許開發人員將資料儲存在管道的任何位置。
  • 宣告執行計劃。
  • 提供運算子來執行 ETL(提取、轉換和載入)函式。

Apache Pig 與 Hive 的比較

Apache Pig 和 Hive 都用於建立 MapReduce 作業。在某些情況下,Hive 以類似於 Apache Pig 的方式操作 HDFS。在下表中,我們列出了一些將 Apache Pig 與 Hive 區分開來的重要點。

Apache Pig Hive
Apache Pig 使用一種名為Pig Latin的語言。它最初是在雅虎建立的。 Hive 使用一種名為HiveQL的語言。它最初是在Facebook建立的。
Pig Latin 是一種資料流語言。 HiveQL 是一種查詢處理語言。
Pig Latin 是一種過程式語言,它符合管道範例。 HiveQL 是一種宣告式語言。
Apache Pig 可以處理結構化、非結構化和半結構化資料。 Hive 主要用於結構化資料。

Apache Pig 的應用

資料科學家通常使用 Apache Pig 來執行涉及臨時處理和快速原型設計的任務。Apache Pig 用於:

  • 處理大型資料來源,例如 Web 日誌。
  • 為搜尋平臺執行資料處理。
  • 處理時間敏感的資料載入。

Apache Pig - 歷史

2006年,Apache Pig 在雅虎被開發為一個研究專案,特別是為了在每個資料集上建立和執行 MapReduce 作業。在2007年,Apache Pig 透過 Apache incubator 開源。在2008年,Apache Pig 的第一個版本釋出。在2010年,Apache Pig 成為 Apache 頂級專案。

廣告
© . All rights reserved.