java 删除 hbase 数据

/**Name		:	KcnaufHadoopManagement
 *Author	:	Zhang Bing 
 *Created	:	2013-7-31
 *Function	:	delete of hbase
 *Partener	:	Zhang Wenbo
 */
package com.exercise.hbase.command;

import java.io.IOException;
import java.util.LinkedList;
import java.util.NavigableMap;
import java.util.Set;

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.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.PrefixFilter;

public class HBaseDelete {
	private final static String deviceSet = "DC-001,DC-002,DC-003";

	private String tablename;

	public String getTablename() {
		return tablename;
	}

	public void setTablename(String tablename) {
		this.tablename = tablename;
	}

	public HBaseDelete(String tablename) {
		super();
		this.tablename = tablename;
	}

	/**
	 *This method will delete delete by rowkey
	 * @param rowkey
	 * @return
	 */
	public int deleteDataByRowkey(String rowkey) {
		Configuration config = HBaseConfiguration.create();
		try {
			config.set("hbase.zookeeper.quorum", deviceSet);
			HTable table = new HTable(config, tablename);
			Delete del = new Delete(rowkey.getBytes());
			table.delete(del);
			return 1;
		} catch (Exception e) {
			e.printStackTrace();
			return -1;
		}
	}

	/**
	 * This method will delete	all data by rowkeyProfix
	 * @param rowkeyProfix
	 * @return
	 */
	public int deleteDataByRowkeyProfix(String rowkeyProfix) {
		Configuration config = HBaseConfiguration.create();
		try {
			config.set("hbase.zookeeper.quorum", deviceSet);
			HTable table = new HTable(config, tablename);
			Delete delete;
			Scan scan = new Scan();
			scan.setFilter(new PrefixFilter(rowkeyProfix.getBytes()));
			ResultScanner rs = table.getScanner(scan);
			for (Result r : rs) {
				KeyValue[] kv = r.raw();
				for (int i = 0; i < kv.length; i++) {
					delete = new Delete(kv[i].getRow());
					table.delete(delete);
				}
			}
			return 1;
		} catch (Exception e) {
			e.printStackTrace();
			return -1;
		}
	}

	/**
	 * This method will delete ALL versions(different rows) specified by the
	 * column provided. Added 2013-07-11 By Zhang Wenbo Update 2013-07-18 By
	 * Zhang Wenbo , Add HTable.delete action.
	 **/
	public int deleteColumns(String family, String qualify) {
		Configuration config = HBaseConfiguration.create();
		config.set("hbase.zookeeper.quorum", deviceSet);
		HTable htable = null;
		try {
			htable = new HTable(config, tablename);
			ResultScanner rsScanner = htable.getScanner(family.getBytes(),
					qualify.getBytes());
			LinkedList<Delete> deleteList = new LinkedList<Delete>();
			Delete delHandle = null;
			for (Result rst = rsScanner.next(); rst != null; rst = rsScanner
					.next()) {
				delHandle = new Delete(rst.getRow());
				delHandle.deleteColumns(family.getBytes(), qualify.getBytes());
				deleteList.add(delHandle);
			}

			htable.delete(deleteList);
			return 1;
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (null != htable) {
				try {
					htable.close();
				} catch (IOException e) {
				}
			}
		}
		return -1;
	}// deleteByColumnFamily END.

	/**
	 * This method will delete ALL versions specified by the timestamp provided.
	 * Added 2013-07-12 By Zhang Wenbo Alter 2013-7-13 By Zhang Bing Update
	 * 2013-07-18 By Zhang Wenbo, add HTable.delete action.
	 **/
	public int deleteByTimestamp(long timestamp) {
		Configuration config = HBaseConfiguration.create();
		config.set("hbase.zookeeper.quorum", deviceSet);
		HTable htable = null;
		try {
			htable = new HTable(config, tablename);
			ResultScanner rsScanner = htable.getScanner(new Scan()
					.setTimeStamp(timestamp));
			LinkedList<Delete> deleteList = new LinkedList<Delete>();
			Delete delHandle = null;
			for (Result rst = rsScanner.next(); rst != null; rst = rsScanner
					.next()) {
				NavigableMap<byte[], NavigableMap<byte[], byte[]>> map = rst
						.getNoVersionMap();
				Set<byte[]> familySet = map.keySet();
				for (byte[] fmily : familySet) {
					Set<byte[]> qualifySet = map.get(fmily).keySet();
					for (byte[] qlify : qualifySet) {
						delHandle = new Delete(rst.getRow());
						delHandle.deleteColumn(fmily, qlify, timestamp);
						deleteList.add(delHandle);
					}
				}
			}
			htable.delete(deleteList);
			return 1;
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (null != htable) {
				try {
					htable.close();
				} catch (IOException e) {
				}
			}
		}
		return -1;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值