1.执行 Pig 脚本
在本章中,我们将了解 Pig 脚本执行的整个概念。 我们将介绍Pig Script中的基本注释,有助于在文件中编写脚本。 此外,我们将看到如何在批处理模式下执行 Pig 脚本以及如何使用适当的步骤和示例并在 HDFS执行Pig 脚本。
2. Apache Pig运行脚本简介
将Pig Latin语句和Pig命令放置在单个文件中,使用Pig脚本。 使用* .pig扩展名识别文件是一种很好的做法,后缀名pig并不是必需的。
我们可以从命令行和Grunt shell运行Pig脚本。
此外,要使用参数替换将值传递给参数。
3.注释 Pig 脚本
我们可以在Pig脚本中包含注释,同时在文件中编写脚本。
多行注释:
多行注释将以'/ *'开头,并以'* /'结尾
1. /* These are the multi-line comments
2. In the pig script */
单行注释:
单行注释将以' – '开头:
1. –we can write single line comments like this.
4.批处理模式执行Pig脚本
我们在批处理模式下执行Pig脚本。
第一步
将所有必需的Pig Latin语句和命令写入单个文件。 然后将其保存为.pig文件。
第二步
执行Apache Pig脚本。 要从shell(Linux)执行Pig脚本:
本地模式
1. $ pig -x local Sample_script.pig
MapReduce 模式
1. $ pig -x MapReduce Sample_script.pig
可以使用exec命令从Grunt shell执行脚本:
1. grunt> exec /sample_script.pig
5.从HDFS执行Pig脚本
可以执行驻留在HDFS中的Pig脚本。 假设在名为/ pig_data /的HDFS目录中有一个名为Sample_script.pig的Pig脚本。
1.$ pig -x mapreduce hdfs://localhost:9000/pig_data/Sample_script.pig
Pig脚本示例
假设在HDFS中有一个文件Employee_details.txt,其中包含以下内容:
1.Employee_details.txt 2.001,mehul,chourey,21,9848022337,Hyderabad 3.002,Ankur,Dutta,22,9848022338,Kolkata 4.003,Shubham,Sengar,22,9848022339,Delhi 5.004,Prerna,Tripathi,21,9848022330,Pune 6.005,Sagar,Joshi,23,9848022336,Bhuwaneshwar 7.006,Monika,sharma,23,9848022335,Chennai 8.007,pulkit,pawar,24,9848022334,trivendram 9.008,Roshan,Shaikh,24,9848022333,Chennai
在同一个HDFS目录下也有一个名为sample_script.pig的示例脚本。 包含对员工进行操作和转换的语句:
1.Employee = LOAD 'hdfs://localhost:9000/pig_data/Employee_details.txt' USING PigStorage(',') 2.as (id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray); 3.Employee_order = ORDER Employee BY age DESC; 4.Employee_limit = LIMIT Employee_order 4; 5.Dump Employee_limit;
该脚本在第一个语句中将名为Employee_details.txt的文件中的数据加载为名为Employee的relation中;
然后,脚本将按照年龄降序排列关系的元组,并将其作为Employee_order存储在第二个语句中;
然后,该脚本将在第三个语句中将Employee_order的前4个元组存储为Employee_limit。
最后,第四条语句将转储relation 限制位4条内容到Employee_limit;
让我们执行sample_script.pig。
1. $./pig -x mapreduce hdfs://localhost:9000/pig_data/sample_script.pig
通过这种方式,Pig会被执行并为提供如下输出:
1.(7,Pulkit,Pawar,24,9848022334,trivendram) 2.(8,Roshan,Shaikh,24,9848022333,Chennai) 3.(5,Sagar,Joshi,23,9848022336,Bhuwaneshwar) 4.(6,Monika,Sharma,23,9848022335,Chennai) 5.2015-10-19 10:31:27,446 [main] INFO org.apache.pig.Main - Pig script completed in 12 6.minutes, 32 seconds and 751 milliseconds (752751 ms)