我是 Linux 和 Apache Pig 的新手。我正在按照本教程学习猪: http ://salsahpc.indiana.edu/ScienceCloud/pig_word_count_tutorial.htm
这是一个基本的字数统计示例。数据文件“input.txt”和程序文件“wordcount.pig”在网站上链接的 Wordcount 包中。
我已经Pig 0.11.1
在我的本地机器上下载了Hadoop
, 和Java 6
.
当我下载 Wordcount 包时,它把我带到了一个 " tar.gz
" 文件。我对这种类型不熟悉,不知道如何提取它。它包含文件“input.txt”、“wordcount.pig”和一个自述文件。我将“ input.txt
”保存到我的桌面。我不确定在哪里保存 wordcount.pig,并决定在 shell 中逐行输入命令行。
我在本地模式下运行 pig 如下:pig -x local
然后我只是在 grunt> 提示符处复制粘贴 wordcount.pig 脚本的每一行,如下所示:
A = load '/home/me/Desktop/input.txt';
B = foreach A generate flatten(TOKENIZE((chararray)$0)) as word;
C = group B by word;
D = foreach C generate COUNT(B), group;
转储 D;
这会产生以下错误: ...
Retrying connect to server: localhost/127.0.0.1:8021. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2043: Unexpected error during execution.
我的问题:
1. 我应该将'input.txt' 和原始'wordcount.pig' 脚本保存到pig-0.11.1 目录中的某个特殊文件夹中吗?也就是说,在 pig-0.11.1 中创建一个名为 word 的文件夹并将 'wordcount.pig' 和 'input.txt' 放在那里,然后在 grunt> 提示符下输入“wordcount.pig” ??? 一般来说,如果我有数据说“dat.txt”,脚本说“program.pig”,我应该在哪里保存它们以从 grunt shell 运行“program.pig”???我认为他们都应该进入 pig-0.11.1,所以我可以做 $ pig -x local wordcount.pig,但我不确定。
2. 为什么我不能像我尝试的那样逐行运行脚本?我在加载语句中指定了文件“input.txt”的位置。那么为什么它不只是逐行运行命令行并将 D 的内容转储到我的屏幕上???
3. 当我尝试使用 $pig 在 mapreduce 模式下运行 Pig 时,会出现以下错误:
重试策略是 RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS) 2013-06-03 23:57:06,956 [main] ERROR org.apache.pig.Main - ERROR 2999: Unexpected internal error。创建数据存储失败