Pig - 从远程HBase服务器读取/写入数据



我想从 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

该解决方案建议在我们的猪脚本中注册 hbase 服务器的动物园管理员仲裁。但是语法不起作用。

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');

但这行不通。由于命名空间中仅允许字母数字字符(不允许使用<>符号而出错)

请让我们知道是否有任何方法可以使用默认org.apache.pig.backend.hadoop.hbase.hbasestorage从pig内部的远程hbase集群读取/写入数据

提前致谢!!

在安装了 pig 的客户端计算机中,请设置以下内容。假设 2181 是 zk cilent 端口。

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

然后直接使用表名而不使用"hbase://",就好像my_table存在于本地集群的 hbase 中一样。

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

最新更新