案例基於hadoop 2.73,僞分佈式集羣
1,數據包導入hadoop集羣hdfs的/user/root目錄下
hdfs dfs -copyFromLocal 2008.csv /user/root
2,編寫totalmiles.pig腳本
records = LOAD '2008.csv' USING PigStorage(',') AS
(Year,Month,DayofMonth,DayOfWeek,DepTime,CRSDepTime,ArrTime,CRSArrTime,UniqueCarrier,FlightNum,TailNum,ActualElapsedTime,CRSElapsedTime,AirTime,ArrDelay,DepDelay,Origin,Dest,Distance:int,TaxiIn,TaxiOut,Cancelled,CancellationCode,Diverted,CarrierDelay,WeatherDelay,NASDelay,SecurityDelay,LateAircraftDelay);
milage_recs = GROUP records ALL;
tot_miles = FOREACH milage_recs GENERATE SUM(records.Distance);
STORE tot_miles INTO '/user/root/totalmiles';
LOAD:讀取hdfs的某個文件或某個目錄下所有文件。
USING:默認情況下Pig解析文件內容是以Tab空格相隔進行的,可以指定函數定製Pig解析是以逗號進行的。
AS xx:hdfs可以存儲任何原始數據,Pig需要從hdfs讀取數據並解析成Pig理解的數據模型。
GROUP … ALL:把每類結果集進行聚合操作。
FOREACH A GENERATE B:A結果集使用B函數轉換成一個單一的值。
STORE INTO:把結果存儲到hdfs。
3,命令行執行totalmiles.pig腳本
pig -x mapreduce totalmiles.pig
提示:-x+mapreduce/spark/tez等,選擇哪一種,是根據集羣所選取的計算框架是哪種。
運行情況:
Details at logfile: /usr/test/code/pig_1516001376428.log
2018-01-14 23:29:39,112 [main] INFO org.apache.pig.Main - Pig script completed in 3 seconds and 128 milliseconds (3128 ms)
4,查看結果
hdfs dfs -cat /user/root/totalmiles/part-r-00000
結果情況:
[root@slave1 code]# hdfs dfs -cat /user/root/totalmiles/part-r-00000
5091775499
資料:
1、《Hadoop For Dummies》
2、《Aapache Pig Getting Started》