我在运行一个简单的pig脚本以使用hbastorage将数据导入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
根据其他问题和线索,对这个问题的主要回答是注册hbastorage引用所需的适当jar。让我困惑的是,如果给定适当的pig函数,我应该如何识别所需的jar。
我甚至尝试打开hbase和pig文件夹下的各种jar文件,以确保在pig脚本中注册适当的类。
例如,因为 java.lang.NoSuchMethodError
是由 org.apache.hadoop.hbase.client.Scan.setCacheBlocks(Z)V
我专门进口了一个jar org.apache.hadoop.hbase.client.Scan
,无济于事。
Pig的文件没有提供任何明显的链接和帮助,我可以参考。
我使用的是hadoop2.7.0,hbase 1.0.1.1,pig 0.15.0。
如果您需要任何其他澄清,请随时再问我一次。如果有人能帮我解决这个问题,我会非常感激的。
另外,是从头开始安装hadoop和相关软件更好,还是直接获得一个hadoop包更好?
2条答案
按热度按时间nnvyjq4y1#
你注册了需要的jar吗。
最重要的jar是海贝、动物园饲养员和Guava
我通过在pigscript中注册zookeeper jar解决了类似的问题
ct2axkht2#
发布的jar有问题:hbase-client-1.0.1.1.jar
您可以使用此代码进行测试,错误将显示:
我尝试过其他的set函数,比如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
set函数的返回值有变化,用旧版本编译的jar不能用当前版本。
对于您的问题,您可以修改pig脚本$pig\u home/bin/pig,设置debug=true,然后它将只打印运行信息。