运行简单的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.NoSuchMethodError
由org.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捆绑包更好?
答案 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解决了类似的问题