Pig 运行脚本

  • 运行脚本

    在本章的此处,我们将看到如何以批处理模式运行Apache Pig脚本。
  • Pig Script中的注释

    在文件中编写脚本时,我们可以在其中添加注释,如下所示。
    多行注释
    我们将以“/*”开头多行注释,以“*/”结尾。
    
    /* 在pig 脚本中
      这是多行注释 */ 
    
    单行注释
    我们将以“--”开始单行注释。
    
    -- 我们像这样写单行注释
    
  • 以批处理模式执行Pig脚本

    在批处理模式下执行Apache Pig语句时,请遵循以下步骤。
    第1步
    将所有必需的Pig Latin语句写在一个文件中。我们可以将所有Pig Latin语句和命令写在一个文件中,并将其另存为.pig文件。
    第2步
    执行Apache Pig脚本。您可以从外壳程序(Linux)执行Pig脚本,如下所示。
    • Local模式 - $ pig -x本地Sample_script.pig
    • MapReduce模式 - $ pig -x mapreduce Sample_script.pig
    您也可以使用exec命令从Grunt shell执行它,如下所示。
    
    grunt> exec /sample_script.pig
    
    从HDFS执行Pig脚本
    我们还可以执行驻留在HDFS中的Pig脚本。假设在HDFS目录/pig_data/中存在一个名为Sample_script.pig的Pig脚本。我们可以如下所示执行它。
    
    $ pig -x mapreduce hdfs://localhost:9000/pig_data/Sample_script.pig 
    
    - 假设我们在HDFS中有一个具有以下内容的文件Student_details.txt。
    
    001,Rajiv,Reddy,21,9848022337,Hyderabad 
    002,siddarth,Battacharya,22,9848022338,Kolkata
    003,Rajesh,Khanna,22,9848022339,Delhi 
    004,Preethi,Agarwal,21,9848022330,Pune 
    005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar 
    006,Archana,Mishra,23,9848022335,Chennai 
    007,Komal,Nayak,24,9848022334,trivendram 
    008,Bharathi,Nambiayar,24,9848022333,Chennai
    
    在同一HDFS目录中,我们还具有一个名为sample_script.pig的示例脚本。该文件包含对学生关系执行操作和转换的语句,如下所示。
    
    student = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING PigStorage(',') as (id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray);
       
    student_order = ORDER student BY age DESC;
      
    student_limit = LIMIT student_order 4;
      
    Dump student_limit;
    
    • 脚本的第一条语句会将数据作为名为student的关系加载到名称为Student_details.txt的文件中。
    • 脚本的第二条语句将根据年龄按降序排列关系的元组,并将其存储为student_order。
    • 脚本的第三条语句会将student_order的前四个元组存储为student_limit。
    • 最后,第四条语句将转储关系student_limit的内容。
    现在让我们执行sample_script.pig,如下所示。
    
    $./pig -x mapreduce hdfs://localhost:9000/pig_data/sample_script.pig
    
    Apache Pig被执行并为您提供以下内容的输出。
    
    (7,Komal,Nayak,24,9848022334,trivendram)
    (8,Bharathi,Nambiayar,24,9848022333,Chennai) 
    (5,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar) 
    (6,Archana,Mishra,23,9848022335,Chennai)
    2015-10-19 10:31:27,446 [main] INFO  org.apache.pig.Main - Pig script completed in 12
    minutes, 32 seconds and 751 milliseconds (752751 ms)