在-x local script.pig和script.pig之间执行Pig脚本区别

时间:2014-01-28 17:15:53

标签: hadoop apache-pig

目前我正在执行我的脚本:

/usr/bin/pig /somepath/myscript.pig

由于某种原因,猪在这个阶段总是挂着。

2014-01-28 16:49:31,328 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 0% complete

如果我使用

`/usr/bin/pig -x local /somepath/myscript.pig`

出于某种原因抱怨道路:

Input(s):
Failed to read data from "file:///path_from_root_dir/tweets_extended_small.csv"

有什么区别,我应该如何在-x local模式中指定路径 这样我就可以摆脱这个错误。

我的tweets_extended_small.csv位于HDFS,我在脚本中指的是

... LOAD 'venues_extended_small.csv' USING ...

谢谢!

3 个答案:

答案 0 :(得分:6)

Pig基本上有两种执行模式

1]本地模式

2] Map-Reduce Mode

本地模式 - 在本地模式下运行Pig时,您需要访问一台计算机;使用本地主机和本地文件系统安装和运行所有文件。

此处 * 所有文件 * 表示您要处理的所有文件以及您在猪脚本中引用/使用的所有jar或任何内容。

Mapreduce模式 - 在mapreduce模式下运行Pig时,您正在处理Hadoop集群和HDFS(Hadoop分布式文件系统)。

在这种情况下, * 所有文件 * 都应该在HDFS中。

所以在跑猪的时候,

pig -x local script_name.pig

“ - x” 指定必须运行脚本的模式。

因此,在这种情况下,script_name.pig需要位于本地文件系统下。

Mapreduce 模式是默认模式; 在运行pig脚本时,您可以,但不需要使用-x标志(pig OR pig -x mapreduce)指定它。

在你的情况下,

将文件和脚本保留在本地计算机中。 将文件加载为,

  

... LOAD'/YOUR_PATH_TO_INPUT_CSV_FILE/venues_extended_small.csv'使用......

然后将脚本移动到本地文件系统,然后运行脚本。

  

pig -x local'/YOUR_PATH_TO_PIG_SCRIPT / script.pig'

在这种情况下,

This链接可以为您提供帮助。

希望这可能对你有所帮助。 感谢。

答案 1 :(得分:1)

/usr/bin/pig -x local在该特定计算机上本地执行pig脚本,而不是在群集上执行分布式MapReduce作业。 -x是指定执行类型的选项,(选项是local& mapReduce(默认值))。

由于您的文件已加载到HDFS上,因此在指定本地执行类型时无法识别本地计算机上的HDFS路径。

从提供的详细信息中,我无​​法弄清楚命令/usr/bin/pig /somepath/myscript.pig挂起的原因。我建议将csv文件放在本地FS上并尝试运行脚本。

答案 2 :(得分:0)

我建议这三个步骤: 1.编写脚本并将其另存为扩展名。有时这些步骤无法解决。单击另存为并在引号中声明它们 2.现在将执行文件位置设为pig -local \home\training\Desktop\file_name.pig 3.理解文件中陈词滥调的商店命令。

当您使用map reduce时,请确保通过列出目录找到目录。