在上一章中,我們解釋了如何安裝Apache Pig。在本章中,我們將討論如何執(zhí)行Apache Pig。
你可以以兩種模式運(yùn)行Apache Pig,即Local(本地)模式和HDFS模式。
在此模式下,所有文件都從本地主機(jī)和本地文件系統(tǒng)安裝和運(yùn)行,不需要Hadoop或HDFS。此模式通常用于測試目的。
MapReduce模式是我們使用Apache Pig加載或處理Hadoop文件系統(tǒng)(HDFS)中存在的數(shù)據(jù)的地方。在這種模式下,每當(dāng)我們執(zhí)行Pig Latin語句來處理數(shù)據(jù)時,會在后端調(diào)用一個MapReduce作業(yè),以對HDFS中存在的數(shù)據(jù)執(zhí)行特定的操作。
Apache Pig腳本可以通過三種方式執(zhí)行,即交互模式,批處理模式和嵌入式模式。
交互模式(Grunt shell) - 你可以使用Grunt shell以交互模式運(yùn)行Apache Pig。在此shell中,你可以輸入Pig Latin語句并獲取輸出(使用Dump運(yùn)算符)。
批處理模式(腳本) - 你可以通過將Pig Latin腳本寫入具有 .pig 擴(kuò)展名的單個文件中,以批處理模式運(yùn)行Apache Pig。
嵌入式模式(UDF) - Apache Pig允許在Java等編程語言中定義我們自己的函數(shù)(UDF用戶定義函數(shù)),并在我們的腳本中使用它們。
你可以使用“-x"選項以所需的模式(local/MapReduce)調(diào)用Grunt shell,如下所示。
Local模式 | MapReduce模式 |
---|---|
Command(命令) - $ ./pig -x local | Command(命令)- $ ./pig -x mapreduce |
Output(輸出) - ![]() | Output(輸出)- ![]() |
這兩個命令都給出了Grunt shell提示符,如下所示。
grunt>
你可以使用“ctrl+d"退出Grunt shell。
在調(diào)用Grunt shell之后,可以通過直接輸入Pig中的Pig Latin語句來執(zhí)行Pig腳本。
grunt> customers = LOAD 'customers.txt' USING PigStorage(',');
你可以在文件中編寫整個Pig Latin腳本,并使用 -x command 執(zhí)行它。我們假設(shè)在一個名為 sample_script.pig 的文件中有一個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腳本。
更多建議: