使用 pig 将二进制文件存储到 hbase

Posted

技术标签:

【中文标题】使用 pig 将二进制文件存储到 hbase【英文标题】:store binary file to hbase with pig 【发布时间】:2017-05-03 15:20:24 【问题描述】:

我有一些带有“.spc”模式的二进制文件,我想通过 pig mapper 作业将这些文件存储到 HBase 中。 rowkey 是文件名。

以下是我使用的命令:

A = LOAD 'hdfs-directory/sampleID-uvvis.spc' USING BinStorage();

B = FOREACH A GENERATE $0 AS rowkey;

C = GROUP B BY rowkey; 

STORE C INTO 'hbase://test3' USING BinStorage('colfamily:uvis');

我得到了如下错误:

[main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2116:
<line 12, column 0> Output Location Validation Failed for: 'hbase://test3 
More info to follow:
java.io.IOException: No FileSystem for scheme: hbase

加载后我还检查了文件:

Dump A
Input(s):
Successfully read 0 records (3353 bytes) from: "hdfs-directory-uvvis.spc"

Output(s):
Successfully stored 0 records in: "hdfs-directory/tmp/temp-
707332811/tmp1004712115"

有人可以帮我解决这个问题吗?如何将二进制文件加载并存储到HBase?

我是 HBase 和猪工作的新手,任何想法都将不胜感激。

【问题讨论】:

【参考方案1】:

您应该使用 org.apache.pig.backend.hadoop.hbase.HBaseStorage 类进行存储。看看这个例子

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

【讨论】:

谢谢回复,我尝试使用新的类进行存储。存储过程有效!!!但是,我认为我的数据加载仍然有错误,这是我得到的:“ 输入:成功读取 0 条记录(3353 字节)来自:“hdfs-directory/sampleID-uvvis.spc” 输出:成功存储 0 条记录在:“hbase://test3”

以上是关于使用 pig 将二进制文件存储到 hbase的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Pig 和 HBaseStorage 存储到 HBase

将平面数据文件从边缘设备摄取到 HDFS 并进行处理

HBase实战之MOB使用指南

使用 Pig 脚本将 Json 导入 Hbase

使用 Apache Pig 将数据加载到 Hbase 表时,如何排除 csv 或文本文件中没有数据(只有空格)的列?

PIG - HBASE - 铸造值