Hbase实践将所有info列簇下的name列导入到另一张表中

简介: Hbase实践将所有info列簇下的name列导入到另一张表中

将所有info列簇下的name列导入到另一张表中

建表:

读取的表:create 'stu_info','info','degree','work'

写入的表:create 't5',{NAME => 'info'}

put 'stu_info','20170820_10001','degree:xueli','benke'
put 'stu_info','20170820_10001','info:age','18'
put 'stu_info','20170820_10001','info:sex','male'
put 'stu_info','20170820_10001','info:name','tom'
put 'stu_info','20170820_10001','work:job','bigdata'
put 'stu_info','20170820_10002','degree:xueli','gaozhong'
put 'stu_info','20170820_10002','info:age','22'
put 'stu_info','20170820_10002','info:sex','female'
put 'stu_info','20170820_10002','info:name','jack'
put 'stu_info','20170820_10003','info:age','22'
put 'stu_info','20170820_10003','info:name','leo'
put 'stu_info','20170820_10004','info:age','18'
put 'stu_info','20170820_10004','info:name','peter'
put 'stu_info','20170820_10005','info:age','19'
put 'stu_info','20170820_10005','info:name','jim'
put 'stu_info','20170820_10006','info:age','20'
put 'stu_info','20170820_10006','info:name','zhangsan'

 

引入依赖

<properties>
     <hbase.version>0.98.6-hadoop2</hbase.version>
</properties>
<!-- hbase Dependency -->
<dependency>
     <groupId>org.apache.hbase</groupId>
     <artifactId>hbase-client</artifactId>
     <version>${hbase.version}</version>
</dependency>
<dependency>
     <groupId>org.apache.hbase</groupId>
     <artifactId>hbase-server</artifactId>
     <version>${hbase.version}</version>
</dependency>

 

编写TestHBasemapper类和TestHBaseDriver类

打jar包,同时选中两个类,右击export 打包

package com.lzhsite.hbase;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
public class TestHBaseDriver extends Configured implements Tool{
  @Override
  public int run(String[] args) throws Exception {
    Configuration conf = this.getConf();
    //job
    Job job = Job.getInstance(conf, "mr-hbase");
    job.setJarByClass(TestHBaseDriver.class);
    Scan scan = new Scan();
    scan.addFamily(Bytes.toBytes("info")); 
    TableMapReduceUtil.initTableMapperJob(
          "stu_info",        // input table
          scan,               // Scan instance to control CF and attribute selection
          TestHBaseMapper.class,     // mapper class
          ImmutableBytesWritable.class,         // mapper output key
          Put.class,  // mapper output value
          //job,false);  //最后一个参数表示是否打包运行
        job);   
    TableMapReduceUtil.initTableReducerJob(
          "t5",        // output table
          null,    // reducer class
         // job,null,null,null,null,false); //最后一个参数表示是否打包运行
           job);
        job.setNumReduceTasks(1);   // at least one, adjust as required
    return job.waitForCompletion(true) ? 0:1;
  }
  public static void main(String[] args) {
    Configuration conf = HBaseConfiguration.create();
    try {
      int status = ToolRunner.run(conf, new TestHBaseDriver(), args);
      System.exit(status);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
package com.lzhsite.hbase;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
public class TestHBaseDriver extends Configured implements Tool{
  @Override
  public int run(String[] args) throws Exception {
    Configuration conf = this.getConf();
    //job
    Job job = Job.getInstance(conf, "mr-hbase");
    job.setJarByClass(TestHBaseDriver.class);
    Scan scan = new Scan();
    scan.addFamily(Bytes.toBytes("info")); 
    TableMapReduceUtil.initTableMapperJob(
          "stu_info",        // input table
          scan,               // Scan instance to control CF and attribute selection
          TestHBaseMapper.class,     // mapper class
          ImmutableBytesWritable.class,         // mapper output key
          Put.class,  // mapper output value
          //job,false);  //最后一个参数表示是否打包运行
        job);   
    TableMapReduceUtil.initTableReducerJob(
          "t5",        // output table
          null,    // reducer class
         // job,null,null,null,null,false); //最后一个参数表示是否打包运行
           job);
        job.setNumReduceTasks(1);   // at least one, adjust as required
    return job.waitForCompletion(true) ? 0:1;
  }
  public static void main(String[] args) {
    Configuration conf = HBaseConfiguration.create();
    try {
      int status = ToolRunner.run(conf, new TestHBaseDriver(), args);
      System.exit(status);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

 

-->运行jar包

/opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/bin/yarn jar /opt/datas/Test_HBase_mr.jar

 

-->查看数据

scan 'default:stu_info'

scan 'default:t5'

遇到的问题:

eclipse本地执行代码是报:Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.mapred.ReduceTask.setLocalMapFiles

放在linux里运行却可以,感觉是hbase 0.98.6-hadoop2的一个bug,如果把mavne依赖里的hbase版本升级到1.2.6由于服务器安装的是hbase-0.98.6-cdh5.3.6,在本地运行又会造成HRegionServer节点挂掉

 

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6天前
|
Shell 分布式数据库 Hbase
如何使用 HBase Shell 进行数据的批量导入和导出?
如何使用 HBase Shell 进行数据的批量导入和导出?
|
6月前
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
258 7
|
4月前
|
Shell 分布式数据库 Hbase
使用 HBase Shell 进行数据的批量导入和导出
使用 HBase Shell 进行数据的批量导入和导出
586 6
|
5月前
|
存储 大数据 分布式数据库
使用Apache HBase进行大数据存储:技术解析与实践
【6月更文挑战第7天】Apache HBase,一个基于HDFS的列式存储NoSQL数据库,提供高可靠、高性能的大数据存储。其特点是列式存储、可扩展至PB级数据、低延迟读写及多版本控制。适用场景包括大规模数据存储、实时分析、日志存储和推荐系统。实践包括集群环境搭建、数据模型设计、导入、查询及性能优化。HBase在大数据存储领域扮演关键角色,未来有望在更多领域发挥作用。
|
5月前
|
存储 分布式计算 Hadoop
Hadoop节点文件存储Hbase面向列
【6月更文挑战第2天】
41 2
|
5月前
|
存储 NoSQL Java
HBase是一个开源的、分布式的、面向列的NoSQL数据库系统
HBase是一个开源的、分布式的、面向列的NoSQL数据库系统
94 0
|
6月前
|
存储 Java 分布式数据库
【分布式计算框架】HBase数据库编程实践
【分布式计算框架】HBase数据库编程实践
104 1
|
存储 分布式数据库 Hbase
分布式数据库HBase的基本概念和架构之概念面向列(簇)的分布式数据库
在分布式数据库 HBase 中,数据的存储和管理是基于列的分布式存储。
89 0
|
SQL 分布式计算 分布式数据库
大数据Sqoop借助Hive将Mysql数据导入至Hbase
大数据Sqoop借助Hive将Mysql数据导入至Hbase
244 0
|
存储 SQL 消息中间件
Kylin 在贝壳的性能挑战和 HBase 优化实践(2)
Kylin 在贝壳的性能挑战和 HBase 优化实践
132 0
Kylin 在贝壳的性能挑战和 HBase 优化实践(2)

相关实验场景

更多