Apache Pig - Grunt Shell



调用 Grunt shell 后,您可以在 shell 中运行 Pig 脚本。除此之外,Grunt shell 还提供了一些有用的 shell 和实用程序命令。本章解释了 Grunt shell 提供的 shell 和实用程序命令。

注意 − 本章某些部分使用了LoadStore之类的命令。请参阅各个章节以获取有关它们的详细信息。

Shell 命令

Apache Pig 的 Grunt shell 主要用于编写 Pig Latin 脚本。在此之前,我们可以使用shfs调用任何 shell 命令。

sh 命令

使用sh命令,我们可以从 Grunt shell 调用任何 shell 命令。从 Grunt shell 使用sh命令,我们无法执行属于 shell 环境一部分的命令(例如 - cd)。

语法

以下是sh命令的语法。

grunt> sh shell command parameters

示例

我们可以使用如下所示的sh选项,从 Grunt shell 调用 Linux shell 的ls命令。在此示例中,它列出了/pig/bin/目录中的文件。

grunt> sh ls
   
pig 
pig_1444799121955.log 
pig.cmd 
pig.py

fs 命令

使用fs命令,我们可以从 Grunt shell 调用任何 FsShell 命令。

语法

以下是fs命令的语法。

grunt> sh File System command parameters

示例

我们可以使用 fs 命令从 Grunt shell 调用 HDFS 的 ls 命令。在下面的示例中,它列出了 HDFS 根目录中的文件。

grunt> fs –ls
  
Found 3 items
drwxrwxrwx   - Hadoop supergroup          0 2015-09-08 14:13 Hbase
drwxr-xr-x   - Hadoop supergroup          0 2015-09-09 14:52 seqgen_data
drwxr-xr-x   - Hadoop supergroup          0 2015-09-08 11:30 twitter_data

同样,我们可以使用fs命令从 Grunt shell 调用所有其他文件系统 shell 命令。

实用程序命令

Grunt shell 提供了一组实用程序命令。这些包括实用程序命令,例如clear、help、history、quitset;以及用于从 Grunt shell 控制 Pig 的命令,例如exec、killrun。以下是 Grunt shell 提供的实用程序命令的描述。

clear 命令

clear命令用于清除 Grunt shell 的屏幕。

语法

您可以使用如下所示的clear命令清除 Grunt shell 的屏幕。

grunt> clear

help 命令

help命令将为您提供 Pig 命令或 Pig 属性的列表。

用法

您可以使用如下所示的help命令获取 Pig 命令列表。

grunt> help

Commands: <pig latin statement>; - See the PigLatin manual for details:
https://hadoop.apache.org/pig
  
File system commands:fs <fs arguments> - Equivalent to Hadoop dfs  command:
https://hadoop.apache.org/common/docs/current/hdfs_shell.html
	 
Diagnostic Commands:describe <alias>[::<alias] - Show the schema for the alias.
Inner aliases can be described as A::B.
    explain [-script <pigscript>] [-out <path>] [-brief] [-dot|-xml] 
       [-param <param_name>=<pCram_value>]
       [-param_file <file_name>] [<alias>] - 
       Show the execution plan to compute the alias or for entire script.
       -script - Explain the entire script.
       -out - Store the output into directory rather than print to stdout.
       -brief - Don't expand nested plans (presenting a smaller graph for overview).
       -dot - Generate the output in .dot format. Default is text format.
       -xml - Generate the output in .xml format. Default is text format.
       -param <param_name - See parameter substitution for details.
       -param_file <file_name> - See parameter substitution for details.
       alias - Alias to explain.
       dump <alias> - Compute the alias and writes the results to stdout.

Utility Commands: exec [-param <param_name>=param_value] [-param_file <file_name>] <script> -
       Execute the script with access to grunt environment including aliases.
       -param <param_name - See parameter substitution for details.
       -param_file <file_name> - See parameter substitution for details.
       script - Script to be executed.
    run [-param <param_name>=param_value] [-param_file <file_name>] <script> -
       Execute the script with access to grunt environment.
		 -param <param_name - See parameter substitution for details.         
       -param_file <file_name> - See parameter substitution for details.
       script - Script to be executed.
    sh  <shell command> - Invoke a shell command.
    kill <job_id> - Kill the hadoop job specified by the hadoop job id.
    set <key> <value> - Provide execution parameters to Pig. Keys and values are case sensitive.
       The following keys are supported:
       default_parallel - Script-level reduce parallelism. Basic input size heuristics used 
       by default.
       debug - Set debug on or off. Default is off.
       job.name - Single-quoted name for jobs. Default is PigLatin:<script name>     
       job.priority - Priority for jobs. Values: very_low, low, normal, high, very_high.
       Default is normal stream.skippath - String that contains the path.
       This is used by streaming any hadoop property.
    help - Display this message.
    history [-n] - Display the list statements in cache.
       -n Hide line numbers.
    quit - Quit the grunt shell. 

history 命令

此命令显示自调用 Grunt shell 以来已执行/使用的语句列表。

用法

假设自打开 Grunt shell 以来,我们已执行了三个语句。

grunt> customers = LOAD 'hdfs://127.0.0.1:9000/pig_data/customers.txt' USING PigStorage(',');
 
grunt> orders = LOAD 'hdfs://127.0.0.1:9000/pig_data/orders.txt' USING PigStorage(',');
 
grunt> student = LOAD 'hdfs://127.0.0.1:9000/pig_data/student.txt' USING PigStorage(',');
 

然后,使用history命令将产生以下输出。

grunt> history

customers = LOAD 'hdfs://127.0.0.1:9000/pig_data/customers.txt' USING PigStorage(','); 
  
orders = LOAD 'hdfs://127.0.0.1:9000/pig_data/orders.txt' USING PigStorage(',');
   
student = LOAD 'hdfs://127.0.0.1:9000/pig_data/student.txt' USING PigStorage(',');
 

set 命令

set命令用于显示/为 Pig 中使用的键分配值。

用法

使用此命令,您可以为以下键设置值。

描述和值
default_parallel 您可以通过将任何整数作为值传递给此键来设置 map 作业的 reducer 数量。
debug 您可以通过将 on/off 传递给此键来关闭或打开 Pig 中的调试功能。
job.name 您可以通过将字符串值传递给此键来将作业名称设置为所需的作业。
job.priority

您可以通过将以下值之一传递给此键来为作业设置作业优先级:

  • very_low
  • low
  • normal
  • high
  • very_high
stream.skippath 对于流式处理,您可以设置不应传输数据的路径,方法是将所需路径以字符串的形式传递给此键。

quit 命令

您可以使用此命令退出 Grunt shell。

用法

如下所示退出 Grunt shell。

grunt> quit

现在让我们看一下可以使用哪些命令从 Grunt shell 控制 Apache Pig。

exec 命令

使用exec命令,我们可以从 Grunt shell 执行 Pig 脚本。

语法

以下是实用程序命令exec的语法。

grunt> exec [–param param_name = param_value] [–param_file file_name] [script]

示例

让我们假设在 HDFS 的/pig_data/目录中有一个名为student.txt的文件,其内容如下所示。

Student.txt

001,Rajiv,Hyderabad
002,siddarth,Kolkata
003,Rajesh,Delhi

并且,假设我们在 HDFS 的/pig_data/目录中有一个名为sample_script.pig的脚本文件,其内容如下所示。

Sample_script.pig

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

现在,让我们使用如下所示的exec命令从 Grunt shell 执行上述脚本。

grunt> exec /sample_script.pig

输出

exec命令执行sample_script.pig中的脚本。按照脚本中的指示,它将student.txt文件加载到 Pig 中,并给出 Dump 操作符的结果,显示以下内容。

(1,Rajiv,Hyderabad)
(2,siddarth,Kolkata)
(3,Rajesh,Delhi) 

kill 命令

您可以使用此命令从 Grunt shell 终止作业。

语法

以下是kill命令的语法。

grunt> kill JobId

示例

假设有一个正在运行的 Pig 作业,其 ID 为Id_0055,您可以使用如下所示的kill命令从 Grunt shell 终止它。

grunt> kill Id_0055

run 命令

您可以使用run命令从 Grunt shell 运行 Pig 脚本。

语法

以下是run命令的语法。

grunt> run [–param param_name = param_value] [–param_file file_name] script

示例

让我们假设在 HDFS 的/pig_data/目录中有一个名为student.txt的文件,其内容如下所示。

Student.txt

001,Rajiv,Hyderabad
002,siddarth,Kolkata
003,Rajesh,Delhi

并且,假设我们在本地文件系统中有一个名为sample_script.pig的脚本文件,其内容如下所示。

Sample_script.pig

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

现在,让我们使用如下所示的 run 命令从 Grunt shell 运行上述脚本。

grunt> run /sample_script.pig

您可以使用如下所示的Dump 操作符查看脚本的输出。

grunt> Dump;

(1,Rajiv,Hyderabad)
(2,siddarth,Kolkata)
(3,Rajesh,Delhi)

注意execrun命令之间的区别在于,如果我们使用run,则脚本中的语句将出现在命令历史记录中。

广告