package com.feng.scheduler.log; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.client.HTableInterface; import org.apache.hadoop.hbase.client.HTablePool; import org.apache.hadoop.hbase.client.Put; 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.Filter; import org.apache.hadoop.hbase.filter.FilterList; import org.apache.hadoop.hbase.filter.FilterList.Operator; import org.apache.hadoop.hbase.filter.PageFilter; import org.apache.hadoop.hbase.filter.PrefixFilter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author bjzhongdegen * */ public class HBaseClient { protected static final Logger LOGGER = LoggerFactory.getLogger(HBaseClient.class); private static Configuration HBASE_CONF = null; private static HTablePool TABLE_POOL = null; private static final String CONNECTOR = "#"; private static com.feng.scheduler.common.filemanager.Configuration commonConf = null; /** * 初始化配置 */ static { commonConf = new com.feng.scheduler.common.filemanager.Configuration("common-config.xml"); Configuration conf = new Configuration(); // 与hbase/conf/hbase-site.xml中hbase.zookeeper.quorum配置的值相同 conf.set("hbase.zookeeper.quorum", commonConf.getDefault("hbase.zookeeper.quorum", "127.0.0.1")); // 与hbase/conf/hbase-site.xml中hbase.zookeeper.property.clientPort配置的值相同 conf.set("hbase.zookeeper.property.clientPort", commonConf.getDefault("hbase.zookeeper.property.clientPort", "2181")); HBASE_CONF = HBaseConfiguration.create(conf); TABLE_POOL = new HTablePool(HBASE_CONF, 30); } public static LogRecord scanLog(String tableName, String prifixKey, String startkey, String stopKey) { LOGGER.info("Get prifixKey["+prifixKey+"], startkey="+startkey+", stopKey="+stopKey); LogRecord result = new LogRecord(); StringBuffer sb = new StringBuffer(); HTableInterface table = null; try { table = TABLE_POOL.getTable(tableName); Scan s = new Scan(); s.setCaching(100); List<Filter> list = new ArrayList<Filter>(); Filter prifixFilter =new PrefixFilter(prifixKey.getBytes()); Filter pageFilter = new PageFilter(100); list.add(pageFilter); list.add(prifixFilter); Filter all = new FilterList(Operator.MUST_PASS_ALL, list); s.setFilter(all); s.setStartRow(startkey.getBytes()); if(!StringUtils.isBlank(stopKey)) { s.setStopRow(stopKey.getBytes()); } ResultScanner rs = table.getScanner(s); for (Result r : rs) { //新版本api for(Cell cell:r.rawCells()){ System.out.println("RowName:"+new String(CellUtil.cloneRow(cell))+" "); System.out.println("Timetamp:"+cell.getTimestamp()+" "); System.out.println("column Family:"+new String(CellUtil.cloneFamily(cell))+" "); System.out.println("row Name:"+new String(CellUtil.cloneQualifier(cell))+" "); System.out.println("value:"+new String(CellUtil.cloneValue(cell))+" "); } KeyValue[] kv = r.raw(); for (int i = 0; i < kv.length; i++) { sb.append(new String(kv[i].getValue())).append("\n"); if(i == kv.length - 1) { result.setNextTimestamp(getTimeStamp(new String(kv[i].getRow()))); } } } rs.close(); } catch (IOException e) { LOGGER.error("Get prifixKey["+prifixKey+"], startkey="+startkey+", stopKey="+stopKey, e); } finally { closeHTable(table); } result.setContent(sb.toString()); return result; } /** * @param string * @return */ private static Long getTimeStamp(String stopKey) { return Long.valueOf(stopKey.split(CONNECTOR)[1]); } public static void pushLog(String tableName, String taskInstanceId, String logContent) { pushLog(tableName, taskInstanceId, logContent, "f", "content"); } public static void pushLog(String tableName, String taskInstanceId, String logContent, String family, String qualifier) { LOGGER.info("push " + taskInstanceId + " log to " + tableName); HTableInterface table = null; try { table = TABLE_POOL.getTable(tableName); Put put = new Put((taskInstanceId + CONNECTOR + System.currentTimeMillis()).getBytes()); put.add(family.getBytes(), qualifier.getBytes(), logContent.getBytes()); table.put(put); } catch (IOException ioe) { LOGGER.error("push " + taskInstanceId + " log to " + tableName + " failed.", ioe); } catch (Throwable e) { LOGGER.error("push " + taskInstanceId + " log to " + tableName + " failed.", e); } finally { closeHTable(table); } } private static void closeHTable(HTableInterface table) { if(table == null) return; try { table.close(); } catch (IOException e) { LOGGER.warn("close hbase table FAILED", e); } } /** * @param args */ public static void main(String[] args) { // for(int i=0; i< 100;i ++) { // HBaseClient.pushLog("task_logs", "xxxxxx", "lllllllllllllllllllllllllll"); // } LogRecord result = HBaseClient.scanLog("task_logs", "9#", "9#1", null); System.out.println(result.getContent()); } }
相关推荐
《HbaseClient详解》 HbaseClient是Apache HBase的核心组件之一,它是客户端与HBase分布式数据库进行交互的桥梁。本文将深入探讨HbaseClient的工作原理、主要功能以及使用技巧,帮助读者更好地理解和掌握HBase的...
当前状态:完全通过 HBase 0.94 和 0.94.16Java hbase-client支持 HBase 服务器的版本[√] 0.94.x[√] 0.94.0[√] 0.94.160.95.x0.96.x安装$ npm install hbase-client使用 CRUD:通过 zookeeper 创建 HBase ...
HBaseClient HBase客户端数据管理软件 概要说明 类似PL/SQL,是一个HBase数据库的客户端数据管理软件。是免费开源的软件。 基于XJava,使用xml配置文件绘制可视化界面。 可视化界面操作 表 表的定义、编辑、删除; ...
HBaseClient-Download 提供的是一个已经编译完成的 HBase 客户端版本库,这对于开发者来说是一个宝贵的资源,因为它可以直接用于与 HBase 数据库进行交互,而无需自行编译源代码。HBase 是一个分布式、面向列的NoSQL...
解决hbase client在windows环境下报Could not initialize class org.fusesource.jansi.internal.Kernel32的问题,把jar包放入hbase client的lib包下,重新运行hbase.cmd shell即可
标题中的“HareDB HBase Client”是一款专为HBase设计的图形用户界面(GUI)工具,它旨在简化HBase数据库的管理和操作。HBase是Apache Hadoop生态系统中的一个分布式、面向列的NoSQL数据库,通常用于处理大规模数据...
hbase-client-2.1.0-cdh6.3.0.jar
赠送jar包:hbase-client-1.4.3.jar; 赠送原API文档:hbase-client-1.4.3-javadoc.jar; 赠送源代码:hbase-client-1.4.3-sources.jar; 赠送Maven依赖信息文件:hbase-client-1.4.3.pom; 包含翻译后的API文档:...
赠送jar包:hbase-client-1.1.2.jar; 赠送原API文档:hbase-client-1.1.2-javadoc.jar; 赠送源代码:hbase-client-1.1.2-sources.jar; 赠送Maven依赖信息文件:hbase-client-1.1.2.pom; 包含翻译后的API文档:...
hbase连接工具,方便操作,可视化数据
在分布式大数据存储领域,HBase是一个非常重要的列式数据库,尤其在处理海量实时数据时表现卓越。本主题将深入探讨如何使用Java客户端API与HBase进行交互,包括集成Spring、MapReduce实例以及协处理器的使用。 首先...
HBASE_CONFIG.set("hbase.zookeeper.property.clientPort", "2181"); HBaseConfiguration cfg = new HBaseConfiguration(HBASE_CONFIG); } ``` **2.2 创建表** 创建表主要是通过`HBaseAdmin`对象来完成的,该...
HBase,作为Apache Hadoop生态系统中的一个分布式、高性能、列式存储的NoSQL数据库,常用于处理大规模数据。虽然HBase提供了命令行接口(CLI)供用户操作数据库,但这种交互方式对于复杂查询和管理任务可能不够直观...
HBaseClient_1.6.1_64.exe可能是针对Windows系统的HBase客户端安装程序,便于用户在Windows环境下快速部署和使用。 二、HBase Shell HBase Shell是HBase自带的一个基于JLine的命令行工具,提供了与HBase交互的命令...
在Linux环境下,我们可以使用hbase-2.3.2-client.jar来实现这一目标。这个客户端库包含了连接HBase集群、执行Get、Put、Scan等操作所需的API。 1. 连接集群:首先,我们需要配置HBase的连接参数,如Zookeeper地址。...
HBase的jar包则包含了HBase Server、HBase Client、Zookeeper等相关组件,使得开发者可以与HBase集群进行交互,执行CRUD(创建、读取、更新、删除)操作。 在实际使用中,开发者可能需要将这些jar包添加到类路径...
HBase是一个分布式的、面向列的开源数据库,该技术来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储...
《HBase 2.4.11:大数据存储与管理的基石》 HBase,作为Apache软件基金会的一个开源项目,是构建在Hadoop文件系统(HDFS)之上的分布式、面向列的数据库,专为处理大规模数据而设计。标题中的“hbase-2.4.11-bin....
赠送jar包:hbase-client-1.2.12.jar; 赠送原API文档:hbase-client-1.2.12-javadoc.jar; 赠送源代码:hbase-client-1.2.12-sources.jar; 赠送Maven依赖信息文件:hbase-client-1.2.12.pom; 包含翻译后的API文档...
在 HBase 中,客户端(如 `HbaseClient.java` 文件所示)是应用程序与 HBase 交互的接口。客户端通过连接到 ZooKeeper 获取 Master Server 的位置,然后与 RegionServer 进行通信,执行 CRUD(创建、读取、更新和...