使用cygwin的windowsxp上的pig

t2a7ltrp  于 2021-06-24  发布在  Pig
关注(0)|答案(1)|浏览(377)

我用cygwin在windowsxp上安装了pig(0.10.0)。我还设置了javau home变量。但是现在当我运行pig-help时,我得到“cannotlocatepig.jar”。做“蚂蚁jar”,再试一次。我没有安装hadoop(使用嵌入式版本)。
另外,当我在将javaèu设置为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。做“蚂蚁jar”,再试一次
我从哪里找不到它在读这条路。任何帮助都将不胜感激。

mzaanser

mzaanser1#

我可以回答你的具体问题,但必须提醒你,我还没有让Pig在我的电脑上的cygwinunix仿真器工作。我会告诉你我所知道的。
消息:“找不到pig.jar。执行'antjar'并重试。'来自pig shell脚本末尾附近的代码块。您正在使用pig-0.10.0。我试图让pig-0.11.1正常工作,但收到了与您相同的错误消息。如果没有安装hadoop,那么shell脚本中就没有指向环境变量hadoop\u bin的目录,因为脚本使用-hadoop\u bin= which hadoop -设置它。因此,在脚本快结束时,没有hadop\u bin设置,代码分支需要pig.jar或pig-(*在$pig\u home给定的位置,放入变量pig\u jar。您的shell脚本找不到这两个,因此pig\u jar为空,因此出现错误消息。
如果[-n“$pig_jar”];然后
classpath=“${classpath}:$pig\u jar”
其他的
echo“找不到pig.jar。“不要打jar,再试一次”
出口1
金融机构
您的目录中不存在java容器pig.jar,因为pig不是使用ant构建的。但事实上,剧本应该找到Pig(*没有Hadoop).jar。在您的目录中有pig-0.10.0.jar,模式匹配意味着pig-后跟一个字符,后跟一个字符。后面跟着任何东西,除了以“withouthadoop”结尾的东西,后面跟着.jar。“withouthadoop”意味着jar不包含嵌入式hadoop,因此hadoop必须已经安装。如果没有安装hadoop,那么pig-0.10.0.jar应该可以。
为什么找不到呢?shell脚本中有一小部分代码,供在cygwin unix中运行脚本的人员使用:
如果$cygwin;然后
类路径= cygpath -w "$CLASSPATH" Pig舍= cygpath -d "$PIG_HOME" 清管器日志目录= cygpath -d "$PIG_LOG_DIR" 金融机构
这会将传递到java.exe的路径转换为java.exe可以理解的形式,因为它是windows可执行文件。我发现在这些表达式中使用-m而不是-w或-d-让cygpath转换例如/cygdrive/c/program files/java。。到c:/program files/java。。使用正斜杠-m规定的-works。
在pig.jar中使用“cannot find org.apache.pig.main”经历了很多痛苦之后(是的,在弄清楚上面的内容之前,我已经“准备好了”),我终于得到了一个“grunt>”提示。为了实现这一点,我对pig shell脚本进行了以下修改:
删除整个if$cygwin。。。上面描述的fi块。我假设将$pig\u home转换为windows文件路径格式会导致代码块:if[-f$pig\u home/pig.jar];然后;pig\u jar=$pig\u home/pig.jar;否则;Pig油罐= echo $PIG_HOME/pig-?.!(*withouthadoop).jar ; fi抛出你看到的错误:cygwin警告,ms-dos样式路径检测到:c:\pig\pig-01~1/pig.jar,等等。
在删除cygwin路径转换块的位置之后,将pig\u opts变量设置重写为:
pig\u opts=“$pig\u opts-dpig.log.dir”= cygpath -m $PIG_LOG_DIR "
pig\u opts=“$pig\u opts-dpig.log.file=pig.log”
pig\u opts=“$pig\u 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”${剩余[@]}”
在你的家里创建一个“logs”目录
在主目录的.bashrc文件中放置以下导出项,以便在bash shell启动时初始化环境变量:
export path=“$path:/cygdrive/c/program files/java/jdk-your\u version/bin:/cygdrive/.your pig home/bin”
export java\u home=“/cygdrive/c/program files/java/jdk-您的\u版本”
导出classpath=“”
所有这些让我输入'pig-xlocal',我得到一个'grunt>'提示。有趣的是,通过下载pig-0.7.0,解包pig-0.7.0.tar.gz文件并运行pig-x local,它可以立即运行。相同的“咕噜>”提示。
但不幸的是,这是假的。在这两种情况下。虚假的呼噜声-口技演员的呼噜声。箭头键将光标移动到整个提示符上-实际上是屏幕上任何你喜欢的地方-返回键不输入任何东西,不管你键入了什么,只有control+backslash起作用,才能返回美元提示符。如果你明白发生了什么,请告诉我。

相关问题