用于UDF的Hdinsight pig默认文件夹

时间:2013-10-27 09:30:20

标签: azure hadoop apache-pig hdinsight

刚开始使用HDInsight。

我想在pig grunt模式下注册一个UDF,但要么不工作,要么我不知道在哪里放jar文件以便猪加载它。

现在我所做的是将jar文件放在lib文件夹(C:\ apps \ dist \ pig-0.9.3-SNAPSHOT \ lib)和pig根文件夹(C:\ apps \ dist \)中猪-0.9.3-SNAPSHOT)并没有什么对我有用,只是继续得到这个:

REGISTER elephant-bird-pig-3.0.0.jar;

,回复是:

2013-10-27 09:28:53,466 [main] 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。

谢谢

1 个答案:

答案 0 :(得分:1)

您不应该长时间将它们放在BIN文件夹中,因为如果节点被重新映像,您可能会丢失文件。最好将它们放入Windows Azure存储中。

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

    • 您可以制作一个“PigExtras”文件夹。您的来源位置会有所不同,您的目的地位置将是您的容器和帐户。

    • 通过hadoop命令行上传:

    hadoop fs -copyFromLocal C:\files\MyUDF.jar wasb://container@account.blob.core.windows.net/PigExtras/MyUDF.jar

    hadoop fs -copyFromLocal c:\apps\dist\pig-0.11.0.1.3.1.0-06\piggybank.jar wasb://container@account.blob.core.windows.net/PigExtras/piggybank.jar

  2. 引用Pig latin脚本中的.jar位置。我相信可以使用通配符来加载某个文件夹中的所有jar文件,但如果有很多文件夹可能会效率低下。

    REGISTER wasb:///PigExtras/*.jar; myset = load 'wasb://container@account.blob.core.windows.net/data/file.txt' using MyUDF(); dump myset