Azure Hdinsight pig自定义项的默认文件夹

Azure Hdinsight pig自定义项的默认文件夹,azure,hadoop,apache-pig,azure-hdinsight,Azure,Hadoop,Apache Pig,Azure Hdinsight,刚开始使用HDInsight 我想在pig grunt模式下注册一个UDF,但要么它不起作用,要么我不知道把jar文件放在哪里,以便pig加载它 现在,我所做的是将jar文件放在lib文件夹(C:\apps\dist\pig-0.9.3-SNAPSHOT\lib)和pig根文件夹(C:\apps\dist\pig-0.9.3-SNAPSHOT)中,但对我来说什么都不起作用,请继续获取以下内容: REGISTER elephant-bird-pig-3.0.0.jar; 答复是: 2013-10

刚开始使用HDInsight

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

现在,我所做的是将jar文件放在lib文件夹(C:\apps\dist\pig-0.9.3-SNAPSHOT\lib)和pig根文件夹(C:\apps\dist\pig-0.9.3-SNAPSHOT)中,但对我来说什么都不起作用,请继续获取以下内容:

REGISTER elephant-bird-pig-3.0.0.jar;
答复是:

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

请让我知道我应该在哪里以及如何注册此自定义项


谢谢

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

  • 将UDF的额外.jar复制到Windows Azure存储Blob。。。黄蜂

    • 例如,您可以创建一个“PigExtras”文件夹。您的源位置将有所不同,而您的目标位置将是您的容器和帐户

    • 通过hadoop命令行上载:

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

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

    • 您也可以通过其他方式上传,例如:

      • 通过.Net代码,例如

      • 通过命令行工具,如AzCopy。在 AzCopy

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

    寄存器wasb:///PigExtras/*.jar;
    myset=load'wasb://container@使用MyUDF()的account.blob.core.windows.net/data/file.txt;
    转储myset


  • 通过将UDF放入bin文件夹,我成功加载了UDF。请。我们最终使用了最后一个选项,即拥有一个包含所有UDF的容器,即使清除HDInsight服务器,该容器也将始终保留。但是我忘了这个问题,所以谢谢你详细的回答。