若表中有数据,不会被覆盖。
若提示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 MapReduce是一种分布式计算框架,用于处理和存储大规模数据集。它通过将复杂任务分解为可并行处理的“映射”和“化简”阶段,使得在...
使用 HBase 和 Map Reduce 的迭代 k 均值 问题陈述 通过迭代运行 Map Reduce 作业,在 HBase 平台上使用 K-means 对能源效率数据集 ( ) 进行聚类。 数据加载到 Hbase 由 DataLoader 类执行。 该类将 Energy ...
Scala是一种强大的函数式编程语言,与Java虚拟机(JVM)兼容,因此非常适合编写HBase的客户端程序。 首先,确保你的开发环境已经配置好,包括安装了Scala、Maven、Hadoop和HBase。在Maven项目中,你需要在`pom.xml`...
该脑图是介绍获取元数据表hbase meta和用户表信息,请贡献给大家下载!
Java 操作 Hbase 进行建表、删表以及对数据进行增删改查 一、Hbase 简介 Hbase 是一个开源的、分布式的、基于 column-family 的 NoSQL 数据库。它是基于 Hadoop 的,使用 HDFS 作为其存储层。Hbase 提供了高性能、...
(1) 列出HBase所有的表的相关信息,例如表名、创建时间等;(2) 在终端打印出指定的表的所有记录数据;(3) 向已经创建好的表添加和删除指定的列族或列;(4) 清空指定的表的所有记录数据(5) 统计表的行数。2...
1. **创建表**:使用HBase shell或Java API,通过`create '表名', '列族'`命令创建表,例如`create 'users', 'info'`创建名为users的表,列族为info。 2. **插入数据**:插入数据通过`put '表名', '行键', '列族:列...
HBase 多表关联查找资料 本文将详细介绍 HBase 多表关联查找的知识点,涵盖了 HBase 表结构设计、rowkey 设计、columnfamily 设计、column 设计等方面的内容,并结合实际应用场景,提供了一些实用的设计方法和思路...
HBase 表设计与性能优化 HBase 是一个分布式的、面向列的 NoSQL 数据库,设计良好的表结构对性能的影响至关重要。本文将从表设计、写表、读表三个方面对 HBase 性能优化进行总结。 表设计 1. 预先创建 Regions ...
在IT行业中,数据库之间的数据迁移是一项常见的任务,特别是在大数据领域,如从传统的SQL数据库(如MySQL)迁移到分布式NoSQL数据库(如HBase)。本文将详细介绍如何使用Java代码实现这一过程,包括样例MySQL表和...
hbase表结构设计,新建表,查询表语句,删除表数据,删除表的例子。
Hive与Hbase的整合,集中两者的优势,使用HiveQL语言,同时具备了实时性
1. `hbase-client.jar`:这是HBase的客户端接口,包含了与HBase交互所需的类和方法。 2. `hbase-common.jar`:包含HBase通用功能,如数据序列化和配置管理。 3. `hbase-server.jar`:包含服务器端的组件,尽管是...
这篇文章将深入探讨如何在Java环境下实现HBase表与RDB表之间的转换,并提供相关的源码资源。 HBase,基于Apache Hadoop的分布式键值存储系统,是设计用于处理大规模数据的NoSQL数据库。它支持水平扩展,能够处理PB...
HBase Shell是HBase提供的命令行界面,用户可以通过它来与HBase集群交互。在开始实验之前,确保已经正确安装并配置了Hadoop和HBase环境。 ### 2. 创建表 实验要求创建一个名为`student`的表,字段包括`Row Key`、`...
HBase的Shell命令是进行表管理、数据插入、查询等操作的一种简单方式。以下是一些常用的Shell命令: 1. **创建表**: - `create 'tablename', 'columnfamily'`:用于创建一个新的表,其中`tablename`是表的名字,`...
在IT行业中,数据库的使用是至关重要的,尤其是在大数据处理领域。本示例“基于Mysql的表转HBase小Demo”提供了...通过深入研究这个Demo,你不仅可以掌握Mysql和HBase之间的转换技术,还能提升在大数据处理领域的技能。
HBase表设计的基本原则与关系型数据库的表设计有很大不同。首先,HBase的表设计需要理解它的数据模型,该模型类似于键值存储,其中数据被组织到列族中,每个列族可以包含大量的列。表中的每个单元格数据都有一个...
spark本地模式访问hbase表进行map reduce操作