我正在尝试为 hadoop 编译一些 java 代码,并且需要知道我需要指定什么类路径。对于 cloudera,我在下面使用它,但我在 MapR 安装中使用什么?令人惊讶的是,我只能找到如何在 google 中设置类路径,而不是设置它的内容。
javac -classpath "/opt/cloudera/parcels/CDH-4.6.0-1.cdh4.6.0.p0.26/lib/hadoop/client/*" mr.java -d mr
通过反复试验找到了答案。奇怪的是,谷歌对此非常沉默,我读过的所有书籍和例子似乎都认为这太明显了,无法打印。
mkdir MyClass
javac -classpath "/opt/mapr/hadoop/hadoop-0.20.2/lib/*" MyClass.java -d MyClass
jar -cvf MyClass.jar -C MyClass .
此外,如果您想要 hive 库,例如用于编译 hive UDF:
javac -classpath "/opt/mapr/hadoop/hadoop-0.20.2/lib/*:/opt/mapr/hive/hive-0.12/lib/*" MyClass.java -d MyClass
编辑:我要添加的一件事是确保在路径周围加上引号,否则 linux 会在命令行上扩展它,这不是你想要的。路径中的 * 需要按原样传递给 java。