【问题标题】:How to find jar dependencies when running Apache Pig script?运行 Apache Pig 脚本时如何查找 jar 依赖项?
【发布时间】:2015-06-17 09:01:56
【问题描述】:

我在运行一个简单的猪脚本以使用 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 捆绑包之一更好?

【问题讨论】:

  • 您解决了这个问题吗?将 hbase 从 0.98.3 升级到 1.0.1.1 后,我遇到了同样的问题。

标签: hadoop hbase apache-pig


【解决方案1】:

发布的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

set 函数的返回值发生变化,旧版本编译的 jar 不适用于当前版本。

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

【讨论】:

    【解决方案2】:

    您是否注册了所需的罐子。
    最重要的罐子 habse、zookeeper 和番石榴
    我通过在我的 pigscript 中注册 zookeeper jar 解决了类似的问题

    【讨论】:

      猜你喜欢
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 2020-04-19
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多