使用Pig

时间:2015-11-18 17:14:32

标签: hadoop hbase apache-pig

我刚刚开始尝试使用Hadoop / HBase / Pig,所以我对此非常陌生,但我似乎无法找到关于我遇到的问题的直截了当的信息而且我完全陷入困境。< / p>

我正在尝试使用Pig从HBase加载数据,但我收到错误:

  

Pig脚本无法验证:java.lang.RuntimeException:无法验证   实例化'org.apache.pig.backend.hadoop.hbase.HBaseStorage'   参数'[info:*]'

此代码运行时:

raw = LOAD 'hbase://testTable' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('info:*') as (id:int); 

从我发现的可能是我没有注册一些jar或者可能与HBase / Pig版本有关。这是完整的脚本:

REGISTER /usr/local/hbase-1.1.2/lib/hbase-common-1.1.2.jar
REGISTER /usr/local/hbase-1.1.2/lib/hbase-client-1.1.2.jar
REGISTER /usr/local/hbase-1.1.2/lib/hbase-server-1.1.2.jar
REGISTER /usr/local/hbase-1.1.2/lib/hbase-protocol-1.1.2.jar
REGISTER /usr/local/hbase-1.1.2/lib/htrace-core-3.1.0-incubating.jar
REGISTER /usr/local/hbase-1.1.2/lib/zookeeper-3.4.6.jar
REGISTER /usr/local/hbase-1.1.2/lib/guava-12.0.1.jar
REGISTER /usr/local/hbase-1.1.2/lib/hbase-hadoop2-compat-1.1.2.jar
REGISTER /usr/local/hbase-1.1.2/lib/hbase-annotations-1.1.2.jar
REGISTER /usr/local/hbase-1.1.2/lib/hbase-thrift-1.1.2.jar

set hbase.zookeper.quorum 'localhost'

raw = LOAD 'hbase://testTable' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('info:*') as (id:int);

我正在使用的版本:

  • Hadoop 2.5.1
  • HBase 1.1.2
  • Pig 0.15.0

非常感谢任何有关问题所在位置以及我可以检查的内容的见解!

更新

所以在.bashrc中我已将hbase_home设置为HBase的主文件夹:

export HBASE_HOME=/usr/local/hbase-1.1.2

我发现可能会发生此错误,因为Pig使用的是用于HBase的jar,这是一个不同的版本。我查看了/ pig / lib / h2文件夹,发现有HBase jars为0.98.12,但我安装了1.1.2。在这种情况下,您是否只需将Pig文件夹中的文件替换为HBase文件夹中的文件?

我尝试将.bashrc中的HBASE_HOME路径更改为Pig文件夹,当我运行脚本时,它似乎作为MapReduce作业提交但后来因错误而失败:

  

ClassNotFoundException:org.apache.htrace.Trace

对此有何见解?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我一直在猪主页目录上查看猪库,看来在实际版本中它们只包含hbase 0.98的连接器。这就是你应该注册HBase库的原因。

/ pig / lib / h2 $ ls avro-mapred-1.7.5-hadoop2.jar hbase-protocol-0.98.12-hadoop2.jar tez-mapreduce-0.7.0.jar commons-collections4-4.0.jar hbase-server-0.98.12-hadoop2.jar tez-runtime-internals-0.7.0.jar hbase-client-0.98.12-hadoop2.jar hive-shims-0.23-0.14.0.jar tez-runtime-library-0.7.0.jar hbase-common-0.98.12-hadoop2.jar tez-api-0.7.0.jar tez-yarn-timeline-history-with-acls-0.7.0.jar hbase-hadoop2-compat-0.98.12-hadoop2.jar tez-common-0.7.0.jar hbase-hadoop-compat-0.98.12-hadoop2.jar tez-dag-0.7.0.jar

无论如何我遇到了同样的问题。我也试着看看猪0.15文档,

https://pig.apache.org/docs/r0.15.0/api/org/apache/pig/backend/hadoop/hbase/HBaseStorage.html

但似乎方法是正确的。

乔什,你终于解决了吗?