带Cygwin的windows XP上的PIG

带Cygwin的windows XP上的PIG,cygwin,apache-pig,Cygwin,Apache Pig,我用Cygwin在WindowsXP上安装了PIG(0.10.0)。我还设置了JAVA_HOME变量。但是现在当我运行pig-help时,我得到“找不到pig.jar.do'antjar',然后再试一次”。我没有安装hadoop(使用嵌入式版本) 另外,当我在设置JAVA_HOME后第一次运行该命令时,我得到了以下警告: cygwin警告: 检测到MS-DOS样式路径:C:\Pig\Pig-01~1.0/Pig.jar 首选的POSIX等效物为:/cygdrive/c/Pig/Pig-01~1.

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

另外,当我在设置JAVA_HOME后第一次运行该命令时,我得到了以下警告:

cygwin警告: 检测到MS-DOS样式路径:C:\Pig\Pig-01~1.0/Pig.jar 首选的POSIX等效物为:/cygdrive/c/Pig/Pig-01~1.0/Pig.jar CYGWIN环境变量选项“nodosfilewarning”将关闭此警告。 有关POSIX路径的更多详细信息,请参阅用户指南: ... 找不到pig.jar。执行“ant jar”,然后重试


我无法从读取此路径的位置找到它。非常感谢您的帮助。

我可以回答您的具体问题,但必须提醒您,我还没有让pig在我的电脑上使用cygwin UNIX仿真器。我会告诉您我所知道的

消息:“找不到pig.jar。执行“ant-jar”并重试。来自pig-shell脚本末尾的一段代码。您正在使用pig-0.10.0。我试图让pig-0.11.1正常工作,但收到了与您相同的错误消息。如果未安装Hadoop,则在shell脚本中没有指向环境变量Hadoop_-BIN的目录,因为脚本使用-Hadoop_-BIN=
哪个Hadoop
-来设置它。因此,在脚本接近尾声时,没有设置HADOP_BIN,代码分支需要pig.jar或pig-?。!(*withouthadoop).jar位于$PIG_HOME给定的位置,放入变量PIG_jar中。您的shell脚本找不到这两个,因此PIG_JAR为空,因此出现错误消息

如果[-n“$PIG_JAR”];然后
CLASSPATH=“${CLASSPATH}:$PIG\U JAR”
否则
echo“找不到pig.jar.do'ant jar,然后重试”
退出1
fi

您的目录中不存在java容器pig.jar,因为pig不是使用ant构建的。但事实上,剧本应该找到猪。?。!(*不带Hadoop).jar。目录中将有pig-0.10.0.jar,模式匹配意味着pig-后跟一个字符,后跟一个字符。后面跟着任何东西,除了以“withouthadoop”结尾的东西,后面跟着.jar。“withouthadoop”意味着jar不包含嵌入式hadoop,因此hadoop必须已经安装。如果没有安装hadoop,pig-0.10.0.jar看起来应该可以

那为什么它找不到呢?在shell脚本中,有一小部分代码供在cygwin UNIX中运行脚本的人员使用:

如果$cygwin;然后
CLASSPATH=
cygpath-w“$CLASSPATH”

PIG_HOME=
cygpath-d“$PIG_HOME”

PIG\u LOG\u DIR=
cygpath-d“$PIG\u LOG\u DIR”

fi

这会将传递到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”(是的,在弄清楚上面的内容之前,我已经“打赌”了),我终于得到了一个“grunt>”提示。为了实现这一点,我对pig shell脚本进行了以下修改:

  • 删除整个if$cygwin。。。如上所述的fi块。我假设将$PIG_HOME转换为Windows文件路径格式会导致代码块:if[-f$PIG_HOME/PIG.jar];然后,;PIG_JAR=$PIG_HOME/PIG.JAR;其他的PIG\u JAR=
    echo$PIG\u HOME/PIG-?。!(*不带Hadoop.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-exec“$java”的shell脚本末尾的代码行。。作为:
exec“$JAVA”$JAVA\u HEAP\u MAX$PIG\u OPTS-classpath”
cygpath-p-m$classpath
“$CLASS”${剩余[@]}

  • 在PIG_主页中创建一个“logs”目录

  • 在主目录的.bashrc文件中放入以下导出项,以便在bash shell启动时初始化环境变量:

export PATH=“$PATH:/cygdrive/c/Program Files/Java/jdk-your_version/bin:/cygdrive/。your pig home/bin”
export JAVA_HOME=“/cygdrive/c/Program Files/JAVA/jdk-your_version”
导出类路径=“”

所有这些让我输入'pig-xlocal',我得到一个'grunt>'提示。有趣的是,通过下载pig-0.7.0,解包pig-0.7.0.tar.gz文件并运行pig-x local,它就可以立即运行。相同的“咕噜>”提示

但不幸的是,这是一个骗局。在这两种情况下。虚假的咕噜声——口技演员的咕噜声。箭头键将光标移动到整个提示上-实际上是屏幕上您喜欢的任何位置-返回键不输入任何内容(无论您键入了什么),只有control+反斜杠可以返回美元提示。如果你到了这一点,明白发生了什么,请让我知道