目前我正在执行我的脚本:
/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 ...
谢谢!
答案 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时,请确保通过列出目录找到目录。