`
bobboy007
  • 浏览: 31514 次
  • 性别: Icon_minigender_1
  • 来自: 淄博
社区版块
存档分类
最新评论

HBase 1.1.4 map reduce 表与表之间

 
阅读更多

若表中有数据,不会被覆盖。

若提示class not found,找到对应包,放到hadoop/share/hadoop/common/下

这是我做hadoop和hbase各种测试时复制过来的包列表

hadoop-common-2.5.2.jar   

hadoop-nfs-2.5.2.jar 

hbase-common-1.1.4.jar      

hbase-protocol-1.1.4.jar  

htrace-core-3.1.0-incubating.jar        

mysql-connector-java-5.1.38-bin.jar 

hadoop-common-2.5.2-tests.jar 

hbase-client-1.1.4.jar  

hbase-hadoop-compat-1.1.4.jar

hbase-server-1.1.4.jar  

        metrics-core-2.2.0.jar 

netty-all-4.0.23.Final.jar  

import java.io.IOException; 
import java.util.Iterator; 
import java.util.StringTokenizer; 
 
import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.hbase.HBaseConfiguration; 
import org.apache.hadoop.hbase.HColumnDescriptor; 
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.KeyValue; 

import org.apache.hadoop.hbase.client.HBaseAdmin;

import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.mapreduce.TableMapper;
import org.apache.hadoop.hbase.mapreduce.TableOutputFormat; 
import org.apache.hadoop.hbase.mapreduce.TableReducer; 
import org.apache.hadoop.hbase.util.Bytes; 
import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.io.LongWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.io.NullWritable; 
import org.apache.hadoop.mapreduce.Job; 
import org.apache.hadoop.mapreduce.Mapper; 
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; 

 
 /*
  * hbase 表 map reduce算数
  * */
public class HBaseTableMapReduce { 
 
  /* 实现 Map 类    
 
   *   输出 类型  字符串
   *   输出值类型   数字
  */
  public static class Map extends 
  TableMapper <Text, IntWritable>{ 
	   
    private final static IntWritable one = new IntWritable(1); 
    private Text word = new Text(); 
 /*
  * 参数固定
  * */
    public void map(ImmutableBytesWritable row, Result values,Context context) 
    				throws IOException, InterruptedException { 
            String count = new String(values.getValue(Bytes.toBytes("content"), Bytes.toBytes("count"))); 
            word.set(count);
            context.write(word, one);
    } 
  } 
 
  /* 实现 Reduce 类
   * map 的输出类型
   * map 的输出值类型
   * tablereduce 输出类型是null,
   * 输出值类型 put 
  */
  public static class Reduce extends 
      TableReducer<Text, IntWritable, ImmutableBytesWritable> { 
	    
	  
	   
	  
    public void reduce(Text key, Iterable<IntWritable> values, 
        Context context) throws IOException, InterruptedException { 
 
     	
      int sum = 0; 
 
      Iterator<IntWritable> iterator = values.iterator(); 
      while (iterator.hasNext()) { 
        sum += iterator.next().get(); 
      }  
      // Put 实例化,每个词存一行 
      Put put = new Put(Bytes.toBytes(("wordcount_"+key).toString())); 
      // 列族为 content,列修饰符为 count,列值为数目 
      put.add(Bytes.toBytes("content"), Bytes.toBytes("count"), 
          Bytes.toBytes(String.valueOf(sum))); 
      
      context.write(null, put); 
    } 
  
     
  } 
  // 创建 HBase 数据表 
  public static void createHBaseTable(String tableName)  
throws IOException { 
    // 创建表描述 
    HTableDescriptor htd = new HTableDescriptor(tableName); 
    // 创建列族描述 
    HColumnDescriptor col = new HColumnDescriptor("content"); 
    htd.addFamily(col); 
 
    // 配置 HBase 
    Configuration conf = HBaseConfiguration.create(); 
 
    //conf.set("hbase.zookeeper.quorum","127.0.0.1"); 
    //conf.set("hbase.zookeeper.property.clientPort", "2181"); 
    HBaseAdmin hAdmin = new HBaseAdmin(conf); 
 
    if (hAdmin.tableExists(tableName)) { 
      System.out.println("该数据表已经存在。"); 
   //   hAdmin.disableTable(tableName); 
   //   hAdmin.deleteTable(tableName); 
    }else { 
  
    	System.out.println("创建表:" + tableName); 
    	hAdmin.createTable(htd);
    }
  } 
 
 
  public static void main(String[] args) throws Exception { 
    String sourceTable = "wordcount"; 
   String targetTable = "wordcount_mapreduce";
   createHBaseTable(targetTable);
    // 第二步:进行 MapReduce 处理 
    // 配置 MapReduce 
    Configuration conf = new Configuration(); 
    // 这几句话很关键 
   // conf.set("mapred.job.tracker", "master:9001"); 
    //conf.set("hbase.zookeeper.quorum","master"); 
    //conf.set("hbase.zookeeper.property.clientPort", "2181"); 
 
 
    Job job = new Job(conf, "New Word Count"); 
    job.setJarByClass(HBaseTableMapReduce.class); 
 
    Scan scan = new Scan();
    scan.setCaching(100);        // 1 is the default in Scan, which will be bad for MapReduce jobs
    scan.setCacheBlocks(false);  // don't set to true for MR jobs
    
    TableMapReduceUtil.initTableMapperJob(
    		sourceTable,      // input table
    		scan,	          // Scan instance to control CF and attribute selection
    		Map.class,   // mapper class
    		Text.class,
    		IntWritable.class,        // mapper output value
    		job);
    
   TableMapReduceUtil.initTableReducerJob(
    		targetTable,      // output table
    		Reduce.class,             // reducer class
    		job);
    
   
 
 
    System.exit(job.waitForCompletion(true) ? 0 : 1); 
 
  } 
} 

 

分享到:
评论

相关推荐

    hadoop map reduce hbase 一人一档

    标题“hadoop map reduce hbase 一人一档”揭示了这个系统的核心组成部分。Hadoop MapReduce是一种分布式计算框架,用于处理和存储大规模数据集。它通过将复杂任务分解为可并行处理的“映射”和“化简”阶段,使得在...

    hbase-kmeans:使用 HBase 和 Map Reduce 的迭代 k 均值

    使用 HBase 和 Map Reduce 的迭代 k 均值 问题陈述 通过迭代运行 Map Reduce 作业,在 HBase 平台上使用 K-means 对能源效率数据集 ( ) 进行聚类。 数据加载到 Hbase 由 DataLoader 类执行。 该类将 Energy ...

    scala API 操作hbase表

    Scala是一种强大的函数式编程语言,与Java虚拟机(JVM)兼容,因此非常适合编写HBase的客户端程序。 首先,确保你的开发环境已经配置好,包括安装了Scala、Maven、Hadoop和HBase。在Maven项目中,你需要在`pom.xml`...

    获取元数据表hbase meta和用户表信息.png

    该脑图是介绍获取元数据表hbase meta和用户表信息,请贡献给大家下载!

    Java操作Hbase进行建表、删表以及对数据进行增删改查

    Java 操作 Hbase 进行建表、删表以及对数据进行增删改查 一、Hbase 简介 Hbase 是一个开源的、分布式的、基于 column-family 的 NoSQL 数据库。它是基于 Hadoop 的,使用 HDFS 作为其存储层。Hbase 提供了高性能、...

    Hbase应用开发实验报告及代码

    (1) 列出HBase所有的表的相关信息,例如表名、创建时间等;(2) 在终端打印出指定的表的所有记录数据;(3) 向已经创建好的表添加和删除指定的列族或列;(4) 清空指定的表的所有记录数据(5) 统计表的行数。2...

    Hbase 安装与基本使用

    1. **创建表**:使用HBase shell或Java API,通过`create '表名', '列族'`命令创建表,例如`create 'users', 'info'`创建名为users的表,列族为info。 2. **插入数据**:插入数据通过`put '表名', '行键', '列族:列...

    HBase多表关联查找资料

    HBase 多表关联查找资料 本文将详细介绍 HBase 多表关联查找的知识点,涵盖了 HBase 表结构设计、rowkey 设计、columnfamily 设计、column 设计等方面的内容,并结合实际应用场景,提供了一些实用的设计方法和思路...

    HBase 表设计 写表、读表 性能优化 word文档

    HBase 表设计与性能优化 HBase 是一个分布式的、面向列的 NoSQL 数据库,设计良好的表结构对性能的影响至关重要。本文将从表设计、写表、读表三个方面对 HBase 性能优化进行总结。 表设计 1. 预先创建 Regions ...

    java代码将mysql表数据导入HBase表

    在IT行业中,数据库之间的数据迁移是一项常见的任务,特别是在大数据领域,如从传统的SQL数据库(如MySQL)迁移到分布式NoSQL数据库(如HBase)。本文将详细介绍如何使用Java代码实现这一过程,包括样例MySQL表和...

    关于hbase表结构的知识点

    hbase表结构设计,新建表,查询表语句,删除表数据,删除表的例子。

    Hive与Hbase的整合

    Hive与Hbase的整合,集中两者的优势,使用HiveQL语言,同时具备了实时性

    java操作Hbase之实现表的创建删除源码

    1. `hbase-client.jar`:这是HBase的客户端接口,包含了与HBase交互所需的类和方法。 2. `hbase-common.jar`:包含HBase通用功能,如数据序列化和配置管理。 3. `hbase-server.jar`:包含服务器端的组件,尽管是...

    HBase表和RDB表的转化的Java源码资源

    这篇文章将深入探讨如何在Java环境下实现HBase表与RDB表之间的转换,并提供相关的源码资源。 HBase,基于Apache Hadoop的分布式键值存储系统,是设计用于处理大规模数据的NoSQL数据库。它支持水平扩展,能够处理PB...

    Hbase实验报告.pdf

    HBase Shell是HBase提供的命令行界面,用户可以通过它来与HBase集群交互。在开始实验之前,确保已经正确安装并配置了Hadoop和HBase环境。 ### 2. 创建表 实验要求创建一个名为`student`的表,字段包括`Row Key`、`...

    大数据实验三-HBase编程实践

    HBase的Shell命令是进行表管理、数据插入、查询等操作的一种简单方式。以下是一些常用的Shell命令: 1. **创建表**: - `create 'tablename', 'columnfamily'`:用于创建一个新的表,其中`tablename`是表的名字,`...

    基于Mysql的表转HBase小Demo

    在IT行业中,数据库的使用是至关重要的,尤其是在大数据处理领域。本示例“基于Mysql的表转HBase小Demo”提供了...通过深入研究这个Demo,你不仅可以掌握Mysql和HBase之间的转换技术,还能提升在大数据处理领域的技能。

    hbase 表设计

    HBase表设计的基本原则与关系型数据库的表设计有很大不同。首先,HBase的表设计需要理解它的数据模型,该模型类似于键值存储,其中数据被组织到列族中,每个列族可以包含大量的列。表中的每个单元格数据都有一个...

    spark访问hbase

    spark本地模式访问hbase表进行map reduce操作

Global site tag (gtag.js) - Google Analytics