【发布时间】:2012-04-27 06:28:40
【问题描述】:
如何将任意格式的数据(如:json、xml等)加载到hbase表中?是否有可以在job config(java)中设置的特定输出格式,以便任何形式的数据都可以被加载到 hbase 中还是有任何应用程序可以在内部将任何形式的数据加载到 hbase 中?
【问题讨论】:
标签: hbase
如何将任意格式的数据(如:json、xml等)加载到hbase表中?是否有可以在job config(java)中设置的特定输出格式,以便任何形式的数据都可以被加载到 hbase 中还是有任何应用程序可以在内部将任何形式的数据加载到 hbase 中?
【问题讨论】:
标签: hbase
你要插入到 hbase 表的数据应该是以字节为单位的。所以,即使是 XML 或 JSON,你也应该将其转换为字节。从 hbase 表中检索数据时应应用反向逻辑。包含转换逻辑的实用程序类将完成这项工作。
【讨论】:
当您想将数据存储在 HBase 中时,您需要做出一些额外的选择,而不仅仅是一个文件。例如,您需要确定键是什么,您将拥有哪些列族,它们的特征(例如,压缩、使用 TTL 等)以及是否将所有输入存储在单个列中,或者解析它并将片段存储在不同的列中列。
这意味着您必须在存储数据之前进行一些处理,而不仅仅是作业配置。
也就是说,当您想要创建一个将写入 HBase 的作业时,您可以通过 TableMapReduceUtil 告诉它涉及哪些表/表 如:
Job job = new Job(conf, "My Job");
job.setJarByClass(Mymapred.class);
Scan scan = new Scan();
// set the scan parameters ..
TableMapReduceUtil.initTableMapperJob(
INPUT_TABLE_NAME,
scan,
MyMapper.class,Text.class,Result.class,
job);
TableMapReduceUtil.initTableReducerJob(
OUTPUT_TABLE_NAME,
MyReducer.class,
job);
【讨论】: