我在hdfs中有一个文件sample.avro,我想存储到HBase中(该文件包含多个条目,表示我想基于“uniqueid”连续存储多个项目。如果未序列化,则avro包含以下内容:
{ uniqueid:132424, 元数据:{ item:“Apple”, 红色”, 属性:[“Crispy”,“Juicy”] }, 相关:{ 课程:“水果”, 电影:“白雪公主” } }
如何将“元数据”对象添加到Java或Pig的HBase表中?我注意到这个例子,但它需要一个csv文件,而我正在使用的文件有多行avro序列化文件。
REGISTER /usr/lib/pig/piggybank.jar
REGISTER /usr/lib/pig/lib/avro-1.7.1.cloudera.2.jar
REGISTER /usr/lib/pig/lib/jackson-core-asl-1.8.8.jar
REGISTER /usr/lib/pig/lib/jackson-mapper-asl-1.8.8.jar
REGISTER /usr/lib/pig/lib/json-simple-1.1.jar
REGISTER /usr/lib/pig/lib/snappy-java-1.0.4.1.jar
fs -rm -r -f inputdir outputdir
A = LOAD '1.csv' USING PigStorage(',') AS (f1:bytearray, f2:bytearray);
B = MAPREDUCE 'target/hbase-bulkload-avro-1.0.0-job.jar' STORE A INTO 'inputdir' USING org.apache.pig.piggybank.storage.avro.AvroStorage('schema', '
{
"type" : "record",
"name" : "r",
"fields" : [ {
"name" : "f1",
"type" : "bytes"
}, {
"name" : "f2",
"type" : "bytes"
} ]
}
') LOAD 'outputdir' `com.cloudera.examples.hbase.bulkimport.Driver inputdir outputdir foo`;
DUMP B;