我们的最终目标是将数据导入Hadoop,在之前的章节中,我们介绍了如何将传统关系数据库的数据导入Hadoop,本节涉及到了HBase。HBase是一种实时分布式数据存储系统,通常位于与Hadoop集群相同的硬件上,或者与Hadoop集群紧密相连,能够直接在MapReduce中使用HBase数据,或将其导入HDFS,这是选择HBase作为解决方案的巨大优势之一。
实践:将HBase数据导入HDFS
如果将要在MapReduce中使用的客户数据与HDFS中的数据结合使用,那该怎么办?可以编写一个MapReduce作业,该作业将HDFS数据集作为输入,并直接从HBase的map或reduce代码中提取数据。但在某些情况下,将HBase中的数据直接转储到HDFS可能更有用,特别是如果计划在多个MapReduce作业中使用该数据并且HBase数据不可变或不经常更改。
问题
将HBase数据导入HDFS
解决方案
HBase包含一个Export类,可用于将HBase数据以SequenceFile格式导入HDFS。此技术还介绍了可用于读取导入的HBase数据代码。
讨论
在开始使用这种技术之前,需要启动并运行HBase。
为了能够从HBase导出数据,首先需要将一些数据加载到HBase。加载器创建一个名为stocks_example的HBase表,其中包含一个列族的详细信息,我们将HBase数据存储为Avro二进制序列化数据,此部分代码就不列举了。
运行加载程序并使用它将样本数据加载到HBase中: