pig - 从远程hbase服务器读取/写入数据

时间:2017-05-15 04:42:28

标签: hadoop hbase apache-pig hortonworks-data-platform

我想从pig脚本读取/写入来自hbase远程服务器的数据。我们正在使用Hortonworks HDP 2.5

以下是场景。

我们有两个集群,一个用于Hive,另一个用于Hbase。我们可以访问作为Hive集群一部分的边缘节点。

我们的代码(MapReduce jobs& Pig脚本)将在Hive集群上执行。

作为要求的一部分,我们还必须从Hbase表读取/写入数据。

我们在网上找到了一个解决方案,但它无法正常工作。 http://grokbase.com/t/cloudera/cdh-user/137at5cg72/pig-stores-into-remote-hbase

此解决方案建议在我们的pig脚本中注册hbase服务器的zookeeper仲裁。但语法不起作用。

  set hbase.zookeeper.quorum '108.168.251.xxx-static.reverse.softlayer.com<http://108.168.251.xxx-static.reverse.softlayer.com:8020/hbase>'

...

STORE raw_rec INTO 'hbase://my_table<http://108.168.251.xxx-static.reverse.softlayer.com:8020/hbase>' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('score:val');

但这不起作用。获取错误命名空间中只允许使用字母数字字符(不允许使用&lt;&gt;符号)

如果有任何方法使用默认的org.apache.pig.backend.hadoop.hbase.hbasestorage

从pig中的远程hbase集群读取/写入数据,请告诉我们。

提前致谢!!!

1 个答案:

答案 0 :(得分:1)

在安装了猪的客户机中,请设置如下。假设2181是zk cilent port。

export PIG_OPTS="$PIG_OPTS -Dhbase.zookeeper.property.clientPort=2181 -Dhbase.zookeeper.quorum=108.168.251.xxx-static.reverse.softlayer.com"

然后直接使用表名而不使用&#34; hbase://&#34; ,好像my_table存在于本地集群的hbase中。

STORE raw_rec INTO 'my_table' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('score:val');