访问本地磁盘上的外部jar的最佳方法

时间:2012-05-04 09:45:14

标签: java hadoop user-defined-functions hive hdfs

我是java的新手,所以可能这是一个天真的问题,我有一个外部jar文件,我想以编程方式移动到Hadoop文件系统,我有API这样做,但只是我需要给jar的路径文件。我不想使用硬编码路径(绝对和相对),如果我可以将它与我的项目一起包含或者更好的东西,以便相同的代码可以在不同的机器上工作,可能相同的jar文件可能不会出现在在不同机器上的相同位置,如果我将提供硬编码路径,那么我需要将文件显式复制到同一位置。


我已经为我的磁盘上可用的Hive编写了UDF(jar文件),现在要访问Hive中的UDF,需要将jar添加到HIVE类路径,所以我想把JAR文件从我的本地系统复制到HDFS然后从HDFS路径向HIVE类路径添加jar。

2 个答案:

答案 0 :(得分:1)

您可以将两个jar文件放在同一目录中,路径看起来像这样

    String path = System.getProperty("user.dir") + File.separator + "name.jar";

System.getProperty(“user.dir”)将返回用户当前的工作目录(运行第一个jar文件的位置), File.separator 是系统相关的默认名称分隔符。

答案 1 :(得分:0)

要在Hive上使用UDF,您必须将包含UDF的jar添加到分布式缓存中,以便它可供Hive集群中的所有节点使用。 您可以使用以下语法执行此操作:

add jar /path_to_jar/my_jar.jar

'/ path_to_jar /'是运行此命令的本地计算机上jar的路径。如果需要,可以在将MapReduce或Hive代码添加到分布式缓存后,通过其名称访问该jar。