CDH4.4 pig0.11 eclipse 无插件配置UDF开发环境

本人成功在windows下用cygwin配置下述的local开发环境,在cloudera quick start vm中分别配置过local 和 mapreduce开发环境,所有内容源于实践。但在windows下,不知道是jdk 还是其他原因,用cogroup、 illustrate、distinct等命令时会出错,还望有大神赐教。所以建议在装好cdh4 的Linux或quick start vm中搭建开发环境。


cdh4 和 cloudera manager 的安装请参阅官网:http://www.cloudera.com/content/support/en/documentation.html

quick start vm:http://www.cloudera.com/content/cloudera-content/cloudera-docs/DemoVMs/Cloudera-QuickStart-VM/cloudera_quickstart_vm.html (推荐)

本文操作都在cloudera用户下进行


1.新建普通的java project

2.加入运行pig,hadoop所需的jar:


hadoop的jar有点多,把vm中/usr/lib/hadoop/client和/usr/lib/hadoop下所有jar加到buildpath中


工程目录结构:



3.生成项目jar

UDF代码神马的我就不po了,各位可参考大神写的《programming pig》和此wiki:http://wiki.apache.org/pig/UDFManual

写好代码后就可以export jar了:

右键项目:




然后会出现


每当我们更改代码后就可以右击first.xxx -> create jar方便快捷地生成myudfs.jar。


4.运行环境配置


4.1 Linux local模式(调试推荐)

右击项目:






其中testFilter.pig为调用你udf的脚本(记住要register喔!,在windows下却因路径问题不能用register,详情请参照4.3,大神可赐教~~)


ok,接着就可以run或設断点debug了~~~~~


4.2 Linux mapreduce模式

前面配置和4.1一样,只是在最后一张图的时候为:



需要注意的是,myudfs.jar的路径是linux的路径,而load文件的路径是hdfs的路径。因此在mapreduce环境时请将项目中pigData的数据放到hdfs上。


这样去运行还是不行的,会报这样的错误

ERROR 4010: Cannot find hadoop configurations in classpath (neither hadoop-site.xml nor core-site.xml was found in the classpath) 


这主要是因为eclipse里的pig读不到hdfs的配置信息。

所以要在Classpath中:


然后加入包含core-site.xml或hadoop-site.xml的文件夹。如我vm中的/etc/hadoop/conf

然后然后然后。。。。。。还会报错,这次就是说配置里host不能用localhost神马的。。。(因为vm就是pseudo

因此在自己有读写权限的目录新建一目录,把core-site.xml拉过来,把fs.defaultFS下的localhost啊name啊神马的改为cloudera,然后在/etc/hosts中加入cloudera。

大功告成!!



4.3 windows local环境

这个不推荐,需要装cygwin,问题很多。我就是在windows上调不出问题却在hadoop上fail了才转到linux来的。唯一的不同就是在run configuration中的program arguments 中用 -Dpig.additional.jars=myudfs.jar来代替script中的register,来解决路径问题。

希望各路大神赐教,如有不对的地方还请提出

猜你喜欢

转载自blog.csdn.net/zwhuang818/article/details/18364945
今日推荐