2013-10-27 35 views
0

刚刚开始使用HDInsight。UDD的Hdinsight猪默认文件夹

我想在猪咕噜模式下注册一个UDF,但无论是不工作,或者我不知道在哪里放置jar文件,以便猪加载它。 (C:\ apps \ dist \ pig-0.9.3-SNAPSHOT \ lib)和猪根文件夹(C:\ apps \ dist)中的jar文件\猪-0.9.3-SNAPSHOT)并没有什么工作对我来说,只是不断收到这样的:

REGISTER elephant-bird-pig-3.0.0.jar; 

和反应是:

2013年10月27日09:28:53466 [主] ERROR org.apache.pig.tools.grunt.Grunt - 错误101:本地文件'elephant-bird-pig-3.0.0.jar'不存在。 日志文件的详细信息:C:\ apps \ dist \ hadoop-1.1.0-SNAPSHOT \ logs \ pig_1382864851131.log

请让我知道在哪里以及如何注册此UDF。

谢谢

+0

我成功地通过把它们放在bin文件夹中加载的UDF。 –

回答

1

你不应该把它们放在BIN文件夹长久,因为如果节点被制作映像可能会丢失的文件。最好将它们放入Windows Azure存储中。

  1. 将用于UDF的额外.jar复制到Windows Azure存储Blob ... WASB。

    • 例如,您可以创建一个“PigExtras”文件夹。您的来源地点会有所不同,您的目的地位置将是您的容器和帐户。通过Hadoop的命令行

    • 上传:

    hadoop fs -copyFromLocal C:\files\MyUDF.jar wasb://[email protected]/PigExtras/MyUDF.jar

    hadoop fs -copyFromLocal c:\apps\dist\pig-0.11.0.1.3.1.0-06\piggybank.jar wasb://[email protected]/PigExtras/piggybank.jar

  2. 参考你的Pig Latin脚本的.jar位置得到它。我相信可以使用通配符来加载某个文件夹中的所有jar,但如果内部存在很多jar文件,那么效率可能会很低。

    REGISTER wasb:///PigExtras/*.jar; myset = load 'wasb://[email protected]/data/file.txt' using MyUDF(); dump myset

+0

请[不要在您的帖子中使用签名或标语](http://stackoverflow.com/help/behavior)。 – meagar

+0

我们终于选择了最后一个选项,即使在清理HDInsight服务器时,也可以使用所有UDF的容器,这些UDF始终保留。 但我忘了这个问题,所以谢谢你的详细解答。 –