我想从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集群读取/写入数据,请告诉我们。提前致谢!!!
答案 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');