猪初学者的例子[意外错误]

时间:2013-06-04 05:14:30

标签: hadoop apache-pig

我是Linux和Apache Pig的新手。我正在按照本教程学习猪: http://salsahpc.indiana.edu/ScienceCloud/pig_word_count_tutorial.htm

这是一个基本的单词计数示例。数据文件'input.txt'和程序文件'wordcount.pig'位于Wordcount包中,链接在网站上。

我已在本地计算机上下载了Pig 0.11.1,以及HadoopJava 6

当我下载Wordcount软件包时,我转到了“tar.gz”文件。我不熟悉这种类型,并不确定如何提取它。 它包含文件'input.txt','wordcount.pig'和自述文件。我将“input.txt”保存到了我的桌面。我不知道在哪里保存wordcount.pig,并决定只在shell中逐行输入命令。

我在本地模式下运行猪,如下所示: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'???我认为他们都应该进入猪-0.11.1,所以我可以做$ pig -x local wordcount.pig,但我不确定。

2。 为什么我不能像我尝试的那样逐行运行脚本? 我在load语句中指定了文件'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:意外的内部错误。无法创建DataStorage

2 个答案:

答案 0 :(得分:3)

此错误表示Pig无法连接到Hadoop以运行该作业。你说你已经下载了Hadoop - 你安装了吗?如果您已安装它,是否已按照其文档启动它 - 您是否运行了bin/start-all.sh脚本?使用-x local告诉Pig使用本地文件系统而不是HDFS,但它仍然需要一个正在运行的Hadoop实例来执行。在尝试运行Pig之前,请按照Hadoop文档设置本地“群集”,确保您的NameNodeDataNode等已启动并运行。

答案 1 :(得分:0)

当hadoop和猪无法相互通信时,会发生2043错误。

永远不要右键单击 - >在处理tar.gz文件时提取这里。

U shud在提取它们时总是在终端上执行tar -xzvf * .tar.gz。

我注意到当你右键点击猪。 .tar.gz文件并且在这里选择提取时,猪没有正确安装。从终端做一个tar -xzvf猪。 .tar.gz很不错。

在执行pig -x local命令之前,确保你正在运行Hadoop。

如果你想从grunt>运行* .pig文件提示,使用: 咕噜> exec * .pig

如果你想在grunt之外运行猪文件>提示,使用: $ pig -x local * .pig