2013-01-09 52 views
0

我在Cygwin的Windows XP上安装了PIG(0.10.0)。我还设置了JAVA_HOME变量。但是现在当我运行pig -help的时候,我得到了“找不到pig.jar。做'罐子',然后再试一次”。我没有安装hadoop(使用嵌入式版本)。在Windows XP上使用Cygwin的PIG

另外,当我跑的命令为第一次设置JAVA_HOME后,我得到以下警告:

cygwin的警告: MS-DOS样式路径检测:C:\猪\ PIG-01〜1.0/pig.jar 首选的POSIX相当于:/cygdrive/c/Pig/PIG-01~1.0/pig.jar CYGWIN环境变量选项“nodosfilewarning”会关闭此警告。 有关POSIX路径的更多详细信息,请参阅用户指南: ... 找不到pig.jar。做'蚂蚁罐',然后再试一次

我找不到它从哪里读取此路径。任何帮助将非常感激。

回答

1

我可以回答您的具体问题,但必须警告我,我的PC上的cygwin UNIX模拟器上还没有猪工作。我会告诉你我所知道的。

消息:'找不到pig.jar。做'樽'然后再试一次。'来自猪壳脚本末尾附近的一段代码。你正在使用猪-0.10.0。我试图让猪-0.1.1工作,但收到与你一样的错误信息。如果未安装Hadoop,则没有目录将环境变量HADOOP_BIN指向shell脚本,因为该脚本使用 - HADOOP_BIN = which hadoop - 来设置它。因此,在脚本结尾附近没有设置HADOP_BIN,代码分支需要pig.jar或pig - ?。!(* withouthadoop).jar在$ PIG_HOME给定的位置,以便放入变量PIG_JAR中。你的shell脚本找不到这些,所以PIG_JAR是空的,因此是错误信息。

if [-n“$ PIG_JAR”];然后
CLASSPATH = “$ {CLASSPATH}:$ PIG_JAR”
其他
回声 “无法找到pig.jar做“蚁族罐子,然后再试一次。”
1号出口
网络

的java的容器pig.jar不存在于您的目录中,因为猪没有使用ant构建。但实际上,脚本应该找到猪。?.((*))。你的目录中会有pig-0.10.0.jar,模式匹配意味着pig-后跟一个单个字符。其次是任何东西,除了以'withouthadoop'结尾的东西,其次是.jar。 'withouthadoop'表示该jar不包含嵌入的hadoop,因此hadoop必须已经安装。如果hadoop没有安装,看起来,pig-0.10.0.jar应该没问题。

那么为什么不找到它呢?在shell脚本中,运行cygwin脚本的人的代码的一小段代码为UNIX:

if $ cygwin;然后
CLASSPATH = cygpath -w "$CLASSPATH"
PIG_HOME = cygpath -d "$PIG_HOME"
PIG_LOG_DIR = cygpath -d "$PIG_LOG_DIR"
音响

该转换通入的java.exe路径成一种形式,的java.exe将理解,因为它是一个Windows可执行文件。我发现在这些表达式中使用-m而不是-w或-d - 使用cygpath来转换例如/ cygdrive/c/Program Files/Java ..到c:/ Program Files/Java ..使用正斜杠 - 哪些-m规定 - 起作用。

在'pig.jar'找不到org.apache.pig.Main'后,我经历了更多的痛苦(是的,我在找出上述之前'anted'),终于有了'grunt>'提示。为了实现这一点,我对猪壳脚本所作的改动如下:

  • 删除整个if $ cygwin; ...如上所述。我假设将$ PIG_HOME转换为Windows文件路径格式导致代码块:if [-f $ PIG_HOME/pig.jar];然后; PIG_JAR = $ PIG_HOME/pig.jar;其他; PIG_JAR = echo $PIG_HOME/pig-?.!(*withouthadoop).jar; fi丢出你看到的错误:cygwin警告,检测到MS-DOS样式路径:c:\ pig \ pig-01〜1/pig.jar等。

  • 继您删除cygwin路径翻译块,重写PIG_OPTS变量的设置为:

PIG_OPTS = “$ PIG_OPTS -Dpig.log.dir = cygpath -m $PIG_LOG_DIR
PIG_OPTS = “$ PIG_OPTS -DPIG.log.file = pig.log”
PIG_OPTS =“$ PIG_OPTS -Dpig.home.dir = cygpath -m $PIG_HOME

  • 重写的代码行的调用java.exe的shell脚本的末尾 - EXEC “$ JAVA” ..为:

的exec “$ JAVA” $ JAVA_HEAP_MAX $ PIG_OPTS -classpath“cygpath -p -m $CLASSPATH “$ CLASS‘$ {剩余[@]}’

  • 在PIG_HOME创建一个‘登录’目录

  • 放入.bashrc文件以下导出项在主目录初始化环境当基础变量^ h壳开始:

出口PATH = “$ PATH:/ cygdrive/C/Program Files文件/的Java/JDK-your_version /斌:/ cygdrive/..你的猪回家/ BIN”
出口JAVA_HOME = “/ cygdrive/C/Program Files文件/的Java/JDK-your_version”
出口CLASSPATH = “”

所有这一切都让我输入 '猪-x地方',我得到了 '咕噜>' 提示符。有趣的是,通过下载pig-0.7.0,解压pig-0.7.0.tar.gz文件并运行pig -x local,它立即可用于开箱即用。同样的'grunt>'提示。

但是,不幸的是,这是一个虚假。在这两种情况下。虚伪的咕噜声 - 一个口腹禅师的咕噜声。箭头键将光标移动到整个提示中 - 实际上您在屏幕上的任何位置 - 返回键不会输入任何内容,无论您是否输入了内容,只有控制+反斜杠才能返回美元提示。如果你明白了这一点,请告诉我。