Apache Pig 執(zhí)行

2018-12-29 17:05 更新

在上一章中,我們解釋了如何安裝Apache Pig。在本章中,我們將討論如何執(zhí)行Apache Pig。

Apache Pig執(zhí)行模式

你可以以兩種模式運(yùn)行Apache Pig,即Local(本地)模式HDFS模式。

Local模式

在此模式下,所有文件都從本地主機(jī)和本地文件系統(tǒng)安裝和運(yùn)行,不需要Hadoop或HDFS。此模式通常用于測(cè)試目的。

MapReduce模式

MapReduce模式是我們使用Apache Pig加載或處理Hadoop文件系統(tǒng)(HDFS)中存在的數(shù)據(jù)的地方。在這種模式下,每當(dāng)我們執(zhí)行Pig Latin語(yǔ)句來(lái)處理數(shù)據(jù)時(shí),會(huì)在后端調(diào)用一個(gè)MapReduce作業(yè),以對(duì)HDFS中存在的數(shù)據(jù)執(zhí)行特定的操作。

Apache Pig執(zhí)行機(jī)制

Apache Pig腳本可以通過(guò)三種方式執(zhí)行,即交互模式,批處理模式和嵌入式模式。

  • 交互模式(Grunt shell) - 你可以使用Grunt shell以交互模式運(yùn)行Apache Pig。在此shell中,你可以輸入Pig Latin語(yǔ)句并獲取輸出(使用Dump運(yùn)算符)。

  • 批處理模式(腳本) - 你可以通過(guò)將Pig Latin腳本寫(xiě)入具有 .pig 擴(kuò)展名的單個(gè)文件中,以批處理模式運(yùn)行Apache Pig。

  • 嵌入式模式(UDF) - Apache Pig允許在Java等編程語(yǔ)言中定義我們自己的函數(shù)(UDF用戶定義函數(shù)),并在我們的腳本中使用它們。

調(diào)用Grunt Shell

你可以使用“-x"選項(xiàng)以所需的模式(local/MapReduce)調(diào)用Grunt shell,如下所示。

Local模式MapReduce模式

Command(命令) -

$ ./pig -x local

Command(命令)-

$ ./pig -x mapreduce

Output(輸出) -

Local Mode Output

Output(輸出)-

MapReduce Mode Output

這兩個(gè)命令都給出了Grunt shell提示符,如下所示。

grunt>

你可以使用“ctrl+d"退出Grunt shell。

在調(diào)用Grunt shell之后,可以通過(guò)直接輸入Pig中的Pig Latin語(yǔ)句來(lái)執(zhí)行Pig腳本。

grunt> customers = LOAD 'customers.txt' USING PigStorage(',');

在批處理模式下執(zhí)行Apache Pig

你可以在文件中編寫(xiě)整個(gè)Pig Latin腳本,并使用 -x command 執(zhí)行它。我們假設(shè)在一個(gè)名為 sample_script.pig 的文件中有一個(gè)Pig腳本,如下所示。

Sample_script.pig

student = LOAD 'hdfs://localhost:9000/pig_data/student.txt' USING
   PigStorage(',') as (id:int,name:chararray,city:chararray);
  
Dump student;

現(xiàn)在,你可以在上面的文件中執(zhí)行腳本,如下所示。

Local模式MapReduce模式
$ pig -x local Sample_script.pig $ pig -x mapreduce Sample_script.pig

注意:我們將詳細(xì)討論如何在批處理模式嵌入模式中運(yùn)行Pig腳本。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)