`
ganliang13
  • 浏览: 253121 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mapreudce 通过读取hbase表删除hbase 数据

阅读更多
package foo.bar.MR;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Delete;
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.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.mapreduce.TableMapper;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.output.NullOutputFormat;

import foo.bar.validate.Const;

public class DropRowByTimeStampMapReduce  {
	
	   public static Configuration configuration;
	   public static List<String> rowkeyList = new ArrayList<String>();
	   public static List<String> qualifierList = new ArrayList<String>();
	   static {  
	        configuration = HBaseConfiguration.create(); 
	        configuration.set("hbase.zookeeper.quorum",Const.ZOOKEEPER_QUORAM);  
	        configuration.set("hbase.rootdir", Const.HBASE_ROOTDIR);  
	    }  
	    
	static class MyMapper extends TableMapper<Text, LongWritable> {
		public void map(ImmutableBytesWritable row, Result r, Context context)
				throws InterruptedException, IOException {
			String tableName = context.getConfiguration().get("tableName");
			HTable htbl = new HTable(configuration, tableName);
			List<Delete> lists = new ArrayList<Delete>();
			for (KeyValue kv : r.raw()) {
				Delete dlt = new Delete(kv.getRow());
				dlt.deleteColumn(kv.getFamily(), kv.getQualifier(), kv.getTimestamp());
				lists.add(dlt);
				System.out.println("delete-- gv:"+Bytes.toString(kv.getRow())+",family:"+Bytes.toString(kv.getFamily())+",qualifier:"+Bytes.toString(kv.getQualifier())+",timestamp:"+kv.getTimestamp());
			}
			htbl.delete(lists);
			htbl.flushCommits();
			htbl.close();
		}
	}
		   
	   
	    public static void main(String[] args) throws Exception {  
	    	if(args.length!=2){
	    		return ;
	    	}
	    	String tableName = args[0];
	    	String timeStamp = args[1];
	    	Configuration config = HBaseConfiguration.create();
	    	config.set("tableName", tableName);
	    	Job job = new Job(config, "ExampleRead");
	    	job.setJarByClass(DropRowByTimeStamp.class);     // class that contains mapper
	    		
	    	Scan scan = new Scan();
	    	scan.setCaching(500);        // 1 is the default in Scan, which will be bad for MapReduce jobs
	    	scan.setCacheBlocks(false);  // don't set to true for MR jobs
	        scan.setTimeStamp(new Long(timeStamp));
	    	  
	    	TableMapReduceUtil.initTableMapperJob(
	    	  tableName,        // input HBase table name
	    	  scan,             // Scan instance to control CF and attribute selection
	    	  MyMapper.class,   // mapper
	    	  null,             // mapper output key 
	    	  null,             // mapper output value
	    	  job);
	    	job.setOutputFormatClass(NullOutputFormat.class);   // because we aren't emitting anything from mapper
	    		    
	    	boolean b = job.waitForCompletion(true);
	    	if (!b) {
	    	  throw new IOException("error with job!");
	    	}
	    }  
	    
	   
}

 

分享到:
评论

相关推荐

    java 通过thrift-0.9.1读取hbase表数据

    本主题将详细探讨如何利用Java通过Thrift-0.9.1版本来读取HBase表数据。 HBase是一个基于Google Bigtable设计的开源NoSQL数据库,它构建在Hadoop之上,提供高可靠性、高性能、分布式的行存储。HBase支持实时读写,...

    spark读取hbase数据,并使用spark sql保存到mysql

    使用spark读取hbase中的数据,并插入到mysql中

    spark使用java读取hbase数据做分布式计算.pdf

    `TableInputFormat`是HBase提供的一个输入格式类,它可以将HBase表的数据转换为Hadoop MapReduce可以处理的键值对。在Java中,我们需要通过`HBaseConfiguration`创建一个配置对象,然后设置HBase的相关属性,如...

    scala API 操作hbase表

    HBase是一个分布式、面向列的NoSQL数据库,它构建于Hadoop之上,提供实时访问大量数据的能力。Scala是一种强大的函数式编程语言,与Java虚拟机(JVM)兼容,因此非常适合编写HBase的客户端程序。 首先,确保你的...

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

    这段代码首先连接到MySQL数据库,读取`users`表的所有数据,然后逐条插入到HBase的`user_data`表中。注意,由于HBase不支持日期类型,我们通常将日期转换为长整型(以毫秒为单位)进行存储。 总结,通过上述步骤,...

    java操作Hbase之从Hbase中读取数据写入hdfs中源码

    通过结合上述两段代码,你可以实现从HBase中读取数据并写入HDFS的功能。这只是一个基本的实现,实际应用中可能需要处理更复杂的情况,例如批量读取、错误处理、数据转换等。同时,为了提高性能,你还可以考虑使用...

    python利用thrift服务读取hbase数据的方法

    因工作需要用python通过hbase的thrift服务读取Hbase表数据,发现公司的测试环境还不支持,于是自己动手准备环境,在此我将在安装步骤尽可能描述清楚,旨在给第一次动手安装的朋友,此过程亲测成功! 安装过程如下: ...

    hbase数据可视化系统

    4. 表管理:支持HBase的建表和删除操作,这需要调用HBase的Admin API,完成表的创建、删除、修改等管理任务。 五、安全性与优化 1. 认证授权:为了保护数据安全,需要在HBase和SpringBoot应用中实现认证和授权机制...

    HBase-SparkStreaming:从HBase表读取并写入HBase表的简单Spark Streaming项目

    从HBase表读取并写入HBase表的简单Spark Streaming项目 #Prereqs运行 创建一个要写入的hbase表:a)启动hbase shell $ hbase shell b)创建表create'/ user / chanumolu / sensor',{NAME =&gt;'data'},{NAME =&gt;'...

    基于Spark SQL可通过输入SQL语句操作HBase表,目前提供对HBase表的查询、创建、删除以及数据插入+源代码+说明

    - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! &lt;项目介绍&gt; 1、该资源内项目代码都经过测试运行成功,...

    hbase和hadoop数据块损坏处理

    * hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair:重建元数据表 四、HBase 备份与恢复 HBase 备份与恢复是非常重要的,可以防止数据丢失。HBase 提供了多种备份与恢复方法,包括 Export、Import、...

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

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

    一款强大的HBase表管理系统.zip

    一款强大的HBase表管理系统,目前系统集成的功能有,命名空间管理,表管理,列簇管理,标签机制,快照管理,以及一些常见的统计指标展示等,另外,系统还内置了HBaseSQL的功能,欢迎大家下载。 一款强大的HBase表...

    hbase备份和数据恢复

    1. HBase到HDFS:可以通过HBase的Export工具,将HBase表的数据导出到HDFS文件,然后进行进一步处理或备份。 2. HDFS到HBase:可以使用HBase的Import工具,将HDFS上的数据文件加载到HBase表中。此过程通常包括预处理...

    Hbase笔记 —— 利用JavaAPI的方式操作Hbase数据库(往hbase的表中批量插入数据).pdf

    在本文档中,我们将深入探讨如何使用Java API与...总的来说,通过Java API与HBase交互涉及到配置连接、管理表结构和批量处理数据。理解这些基本操作对于高效地使用HBase至关重要,特别是在大数据处理和分析的场景下。

    Hbase 表设计与操作

    HBase – Hadoop Database,是一...Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。

    hbase-rdd:Spark RDD从HBase读取,写入和删除

    在大数据处理领域,Apache Spark 和 Apache HBase ...通过合理利用 RDD 的特性,我们可以高效地处理大规模 HBase 数据,实现读取、写入和删除操作。在实际应用中,要注意性能优化和错误处理,确保系统的稳定性和效率。

    4.抽取mysql数据到hbase表中.docx

    ### 知识点详解 #### 一、HBase与MySQL数据抽取概述 1. **HBase简介**:HBase是...通过以上步骤,我们可以成功地将MySQL中的数据抽取到HBase表中,从而利用HBase的高性能和大数据处理能力来优化数据访问和分析流程。

    hbase 表设计

    Apache HBase是一个开源的非关系型分布式数据库,它是Google Bigtable的开源实现。HBase特别适合于需要快速...通过对HBase表设计原则的深入理解和应用,可以构建出高效、可扩展、且能够处理大数据量的存储解决方案。

Global site tag (gtag.js) - Google Analytics