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表数据。 HBase是一个基于Google Bigtable设计的开源NoSQL数据库,它构建在Hadoop之上,提供高可靠性、高性能、分布式的行存储。HBase支持实时读写,...
使用spark读取hbase中的数据,并插入到mysql中
`TableInputFormat`是HBase提供的一个输入格式类,它可以将HBase表的数据转换为Hadoop MapReduce可以处理的键值对。在Java中,我们需要通过`HBaseConfiguration`创建一个配置对象,然后设置HBase的相关属性,如...
HBase是一个分布式、面向列的NoSQL数据库,它构建于Hadoop之上,提供实时访问大量数据的能力。Scala是一种强大的函数式编程语言,与Java虚拟机(JVM)兼容,因此非常适合编写HBase的客户端程序。 首先,确保你的...
这段代码首先连接到MySQL数据库,读取`users`表的所有数据,然后逐条插入到HBase的`user_data`表中。注意,由于HBase不支持日期类型,我们通常将日期转换为长整型(以毫秒为单位)进行存储。 总结,通过上述步骤,...
通过结合上述两段代码,你可以实现从HBase中读取数据并写入HDFS的功能。这只是一个基本的实现,实际应用中可能需要处理更复杂的情况,例如批量读取、错误处理、数据转换等。同时,为了提高性能,你还可以考虑使用...
因工作需要用python通过hbase的thrift服务读取Hbase表数据,发现公司的测试环境还不支持,于是自己动手准备环境,在此我将在安装步骤尽可能描述清楚,旨在给第一次动手安装的朋友,此过程亲测成功! 安装过程如下: ...
4. 表管理:支持HBase的建表和删除操作,这需要调用HBase的Admin API,完成表的创建、删除、修改等管理任务。 五、安全性与优化 1. 认证授权:为了保护数据安全,需要在HBase和SpringBoot应用中实现认证和授权机制...
从HBase表读取并写入HBase表的简单Spark Streaming项目 #Prereqs运行 创建一个要写入的hbase表:a)启动hbase shell $ hbase shell b)创建表create'/ user / chanumolu / sensor',{NAME =>'data'},{NAME =>'...
- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,...
* hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair:重建元数据表 四、HBase 备份与恢复 HBase 备份与恢复是非常重要的,可以防止数据丢失。HBase 提供了多种备份与恢复方法,包括 Export、Import、...
Java 操作 Hbase 进行建表、删表以及对数据进行增删改查 一、Hbase 简介 Hbase 是一个开源的、分布式的、基于 column-family 的 NoSQL 数据库。它是基于 Hadoop 的,使用 HDFS 作为其存储层。Hbase 提供了高性能、...
一款强大的HBase表管理系统,目前系统集成的功能有,命名空间管理,表管理,列簇管理,标签机制,快照管理,以及一些常见的统计指标展示等,另外,系统还内置了HBaseSQL的功能,欢迎大家下载。 一款强大的HBase表...
1. HBase到HDFS:可以通过HBase的Export工具,将HBase表的数据导出到HDFS文件,然后进行进一步处理或备份。 2. HDFS到HBase:可以使用HBase的Import工具,将HDFS上的数据文件加载到HBase表中。此过程通常包括预处理...
在本文档中,我们将深入探讨如何使用Java API与...总的来说,通过Java API与HBase交互涉及到配置连接、管理表结构和批量处理数据。理解这些基本操作对于高效地使用HBase至关重要,特别是在大数据处理和分析的场景下。
HBase – Hadoop Database,是一...Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。
在大数据处理领域,Apache Spark 和 Apache HBase ...通过合理利用 RDD 的特性,我们可以高效地处理大规模 HBase 数据,实现读取、写入和删除操作。在实际应用中,要注意性能优化和错误处理,确保系统的稳定性和效率。
### 知识点详解 #### 一、HBase与MySQL数据抽取概述 1. **HBase简介**:HBase是...通过以上步骤,我们可以成功地将MySQL中的数据抽取到HBase表中,从而利用HBase的高性能和大数据处理能力来优化数据访问和分析流程。
Apache HBase是一个开源的非关系型分布式数据库,它是Google Bigtable的开源实现。HBase特别适合于需要快速...通过对HBase表设计原则的深入理解和应用,可以构建出高效、可扩展、且能够处理大数据量的存储解决方案。