gpt4 book ai didi

hadoop - 运行 Apache Pig 脚本时如何查找 jar 依赖项?

转载 作者:可可西里 更新时间:2023-11-01 14:47:00 26 4
gpt4 key购买 nike

我在运行一个简单的 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 bundle 更好?

最佳答案

发布的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脚本$PIG_HOME/bin/pig,设置debug=true,那么它就只会打印运行信息。

关于hadoop - 运行 Apache Pig 脚本时如何查找 jar 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30886937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com