首页 文章

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

提问于
浏览
1

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

以下是场景 .

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

我们的代码(MapReduce作业和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');

但这不起作用 . 获取错误 only alphanumeric characters are allowed in namespace (<>符号不允许)

如果有任何方法使用默认的org.apache.pig.backend.hadoop.hbase.hbasestorage从pig中的远程hbase集群读取/写入数据,请告诉我们 .

提前致谢!!!

1 回答

  • 1

    在安装了猪的客户机中,请设置如下 . 假设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');
    

相关问题