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

Ant*_*lev 2 hadoop apache-pig

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

/usr/bin/pig /somepath/myscript.pig
Run Code Online (Sandbox Code Playgroud)

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

2014-01-28 16:49:31,328 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 0% complete
Run Code Online (Sandbox Code Playgroud)

如果我使用

`/usr/bin/pig -x local /somepath/myscript.pig`
Run Code Online (Sandbox Code Playgroud)

由于某种原因抱怨路径:

Input(s):
Failed to read data from "file:///path_from_root_dir/tweets_extended_small.csv"
Run Code Online (Sandbox Code Playgroud)

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

tweets_extended_small.csvHDFS,我在脚本中指的是这样的

... LOAD 'venues_extended_small.csv' USING ...
Run Code Online (Sandbox Code Playgroud)

谢谢!

ash*_*ave 7

Pig基本上有两种执行模式

1]本地模式

2] Map-Reduce模式

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

这里*所有文件*表示您要处理的所有文件以及您在pig Script中引用/使用的所有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'

在这种情况下,链接可以帮助您.

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