Pig 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环境一部分的命令( ex -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提供了一组实用程序命令。这些包括实用程序命令,如 清除,帮助,历史记录,退出设置 ; 以及诸如 exec,killrun之类的命令 来控制Grunt shell中的Pig。下面给出的是由Grunt shell提供的实用程序命令的描述。

清除命令

明确 命令用于清除咕噜壳的屏幕。

句法

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

grunt> clear

帮助命令

帮助下 命令给你pig命令或pig的属性列表。

用法

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

**grunt > help**

Commands: <pig latin statement>; - See the PigLatin manual for details:
http://hadoop.apache.org/pig

File system commands:fs <fs arguments> - Equivalent to Hadoop dfs  command:
http://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.

历史命令

该命令显示自从Grunt销售被调用以来执行/使用的语句列表。

用法

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

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

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

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

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

**grunt > history**

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

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

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

设置命令

命令用于显示/赋值在pig中使用的密钥。

用法

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

Key Description and values
default_parallel 您可以通过将任何整数作为值传递给此键来设置地图作业的缩减器数量。
debug 您可以通过打开/关闭此键来关闭或打开Pig中的调试功能。
job.name 您可以通过将字符串值传递给该键来将作业名称设置为所需的作业。
job.priority 您可以通过将以下某个值传递给此键来将作业优先级设置为某个作业 -
  • 非常低
  • 正常
  • 很高
stream.skippath 对于流式传输,您可以通过将所需路径以字符串形式传递给此键来设置数据不传输的路径。

退出命令

您可以使用此命令从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://localhost: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中,并向您显示转储操作员显示以下内容的结果。

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

杀死命令

您可以使用此命令从Grunt shell中杀死一个作业。

句法

下面给出了 kill 命令的语法。

grunt> kill JobId

假设有一个正在运行的Pig作业 Id_0055 ,你可以使用 kill 命令从Grunt shell中杀死它,如下所示。

grunt> kill Id_0055

运行命令

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

句法

下面给出的是 运行 命令的语法。

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://localhost:9000/pig_data/student.txt' USING
   PigStorage(',') as (id:int,name:chararray,city:chararray);

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

grunt> run /sample_script.pig

您可以使用转 储运算符 来查看脚本的输出,如下所示。

**grunt > Dump;**

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

- execrun 命令之间的区别在于,如果我们使用 run ,脚本中的语句在命令历史记录中可用。