如何在运行Apache Pig脚本时找到jar依赖项?

时间:2015-06-17 09:01:56

标签: hadoop hbase apache-pig

运行简单的pig脚本以使用HBaseStorage

将数据导入HBase时遇到一些困难

我遇到的错误由:

给出
Caused by: <file demo.pig, line 14, column 0> pig script failed to validate: java.lang.RuntimeException: could not instantiate 'org.apache.pig.backend.hadoop.hbase.HBaseStorage' with arguments '[rdf:predicate rdf:object]'              

Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Scan.setCacheBlocks(Z)V        
        at org.apache.pig.backend.hadoop.hbase.HBaseStorage.initScan(HBaseStorage.java:427)

        at org.apache.pig.backend.hadoop.hbase.HBaseStorage.<init>(HBaseStorage.java:368)

        at org.apache.pig.backend.hadoop.hbase.HBaseStorage.<init>(HBaseStorage.java:239) 13_21.51.28.tar.gz
        ... 29 more

根据其他问题和主题,这个问题的主要答案/答案是注册HBaseStorage引用所需的适当jar。令我难过的是,如果给出适当的Pig函数,我应该如何识别所需的JAR。

我甚至尝试在hbase和pig文件夹下打开各种jar文件,以确保在pig脚本中注册了相应的类。

例如,java.lang.NoSuchMethodErrororg.apache.hadoop.hbase.client.Scan.setCacheBlocks(Z)V

引起

我特意导入了包含org.apache.hadoop.hbase.client.Scan的jar,但无济于事。

Pig的文档没有提供任何明显的链接和帮助,我可以参考。

我正在使用Hadoop 2.7.0,HBase 1.0.1.1。,Pig 0.15.0。

如果您需要任何其他说明,请随时再次问我。如果有人可以帮我解决这个问题,我真的很感激。

此外,从头开始安装Hadoop和相关软件是否更好,或者直接获得其中一个Hadoop捆绑包更好?

2 个答案:

答案 0 :(得分:3)

发布的jar有问题:hbase-client-1.0.1.1.jar

您可以使用此代码对其进行测试,错误将显示:

Scan scan = new Scan();
scan.setCacheBlocks(true);

我尝试过其他设置功能,比如setCaching,它会抛出相同的错误。当我检查源代码时,存在这些功能。也许只是手动编译hbase-client-1.0.1.1.jar,我还在寻找更好的解决方案...

============

上面的更新,发现根本原因是hbase-client-1.0.1.1.jar与旧版本不兼容。

https://issues.apache.org/jira/browse/HBASE-10841

https://issues.apache.org/jira/browse/HBASE-10460

设置函数的返回值发生了变化,使用旧版本编译的jar无法使用当前版本。

对于你的问题,你可以修改猪脚本$ PIG_HOME / bin / pig,设置debug = true,然后它就会打印运行信息。

答案 1 :(得分:0)

您是否注册了所需的罐子 最重要的罐子是habse,zookeeper和guava 我通过在我的pigcript中注册zookeeper jar解决了类似的问题