如何加载Avro并存储到HBase w / pig或java?

时间:2014-02-12 04:02:11

标签: java hadoop apache-pig avro

我在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;

0 个答案:

没有答案