在 HDInsight 上搭配 Apache Hadoop 使用 Apache Pig
了解如何使用 Apache Pig 搭配 HDInsight。
Apache Pig 是一個平台,可使用名為 Pig Latin 的程序性語言建立 Apache Hadoop 的程式。 Pig 是 Java 的替代方案,可用來建立 MapReduce 解決方案,且隨附於 Azure HDInsight 中。 使用下表了解可搭配 HDInsight 使用 Pig 的各種方式︰
為何要使用 Apache Pig
在 Hadoop 中使用 MapReduce 處理資料的其中一項挑戰是,只藉由使用 map 和 reduce 函數實作處理邏輯。 如果是複雜的處理,您經常必須將處理分成多個鏈結在一起的 MapReduce 作業,才能獲得想要的結果。
Pig 可讓您將處理定義為一系列轉換,使資料流過以產生所需的輸出。
Pig Latin 語言可讓您從原始輸入描述資料流 (經過一或多個轉換後) 以產生所需的輸出。 Pig Latin 程式遵循此一般模式:
載入:從檔案系統讀取要操控的資料。
轉換:操控資料。
傾印或儲存:將資料輸出至畫面,或儲存資料以供處理。
使用者自訂函數
Pig Latin 也支援使用者定義函數 (UDF),此函數讓您可用叫用外部元件,這些元件會實作很難以 Pig Latin 模型化的邏輯。
如需 Pig Latin 的詳細資訊,請參閱 Pig Latin 參考手冊 1 (英文) 和 Pig Latin 參考手冊 2 (英文)。
範例資料
HDInsight 提供各種範例資料集,儲存在 /example/data
和 /HdiSamples
目錄中。 這些目錄位於您的叢集預設儲存體中。 本檔中的 Pig 範例使用 中的 /example/data/sample.log
Log4j 檔案。
檔案中的每一筆記錄均由一列欄位組成,包括以 [LOG LEVEL]
欄位來顯示類型和嚴重性,例如:
2012-02-03 20:26:41 SampleClass3 [ERROR] verbose detail for id 1527353937
在上一個範例中,記錄層級是「錯誤」。
注意
您也可以使用 Apache Log4j 記錄工具產生 log4j 檔案,然後將該檔案上傳至 Blob。 如需指示,請參閱 將資料上傳至 HDInsight 。 如需關於如何搭配 HDInsight 使用 Azure 儲存體 Blob 的詳細資訊,請參閱 搭配 HDInsight 使用 Azure Blob 儲存體。
範例作業
以下 Pig Latin 作業會從 HDInsight 叢集的預設儲存體載入 sample.log
檔案。 然後該工作會執行一系列轉換,進而產生輸入資料中每個記錄層級出現次數的計數。 結果會寫入 STDOUT。
LOGS = LOAD 'wasb:///example/data/sample.log';
LEVELS = foreach LOGS generate REGEX_EXTRACT($0, '(TRACE|DEBUG|INFO|WARN|ERROR|FATAL)', 1) as LOGLEVEL;
FILTEREDLEVELS = FILTER LEVELS by LOGLEVEL is not null;
GROUPEDLEVELS = GROUP FILTEREDLEVELS by LOGLEVEL;
FREQUENCIES = foreach GROUPEDLEVELS generate group as LOGLEVEL, COUNT(FILTEREDLEVELS.LOGLEVEL) as COUNT;
RESULT = order FREQUENCIES by COUNT desc;
DUMP RESULT;
下圖顯示每個轉換如何處理資料的摘要。
執行 Pig Latin 工作
HDInsight 可以使用各種方法執行 Pig Latin 工作。 請使用下表決定適合您的方法,然後跟著連結逐項閱讀介紹。
Pig 和 SQL Server Integration Services
您可以使用 SQL Server Integration Services (SSIS) 執行 Pig 作業。 適用於 SSIS 的 Azure Feature Pack 中提供下列元件可搭配 HDInsight 上的 Pig 工作使用。
在這裡深入了解適用於 SSIS 的 Azure Feature Pack。
下一步
現在您已學會如何搭配 HDInsight 使用 Pig,接著請使用下列連結來探索 Azure HDInsight 的其他使用方式。