package com.cfnet.hadoop.hbase; import java.io.IOException; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MasterNotRunningException; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.ZooKeeperConnectionException; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.HTable; 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.util.Bytes; /** * HBase使用例子 * @author 陶诗德 * */public class HbaseDemo { static Configuration hbaseConfiguration = HBaseConfiguration.create(); static{ hbaseConfiguration.addResource("hbase-site.xml"); } /** * 创建表 * @param tablename 表名 * @param columnFamily 列族 * @throws IOException * @throws ZooKeeperConnectionException * @throws MasterNotRunningException */public static void CreateTable(String tablename,String columnFamily) throws MasterNotRunningException, ZooKeeperConnectionException, IOException{ HBaseAdmin admin = new HBaseAdmin(hbaseConfiguration); if(admin.tableExists(tablename)){//如果表已经存在 System.out.println(tablename+"表已经存在!"); }else{ TableName tableName =TableName.valueOf(tablename); HTableDescriptor tableDesc = new HTableDescriptor(tableName); tableDesc.addFamily(new HColumnDescriptor(columnFamily)); admin.createTable(tableDesc); System.out.println(tablename+"表已经成功创建!"); } } /** * 向表中插入一条新数据 * @param tableName 表名 * @param row 行键key * @param columnFamily 列族 * @param column 列名 * @param data 要插入的数据 * @throws IOException */public static void PutData(String tableName,String row,String columnFamily,String column,String data) throws IOException{ HTable table = new HTable(hbaseConfiguration, tableName); Put put = new Put(Bytes.toBytes(row)); put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(data)); table.put(put); System.out.println("put '"+row+"','"+columnFamily+":"+column+"','"+data+"'"); } /** * 获取指定行的所有数据 * @param tableName 表名 * @param row 行键key * @param columnFamily 列族 * @param column 列名 * @throws IOException */public static void GetData(String tableName,String row,String columnFamily,String column) throws IOException{ HTable table = new HTable(hbaseConfiguration, tableName); // Scan scan = new Scan();// ResultScanner result = table.getScanner(scan); Get get = new Get(Bytes.toBytes(row)); Result result = table.get(get); byte[] rb = result.getValue(Bytes.toBytes(columnFamily), Bytes.toBytes(column)); String value = new String(rb,"UTF-8"); System.out.println(value); } /** * 获取指定表的所有数据 * @param tableName 表名 * @throws IOException */public static void ScanAll(String tableName) throws IOException{ HTable table = new HTable(hbaseConfiguration, tableName); Scan scan = new Scan(); ResultScanner resultScanner = table.getScanner(scan); for (Result result : resultScanner) { List<Cell> cells= result.listCells(); for (Cell cell : cells) { byte[] rb = cell.getValueArray(); String row = new String(result.getRow(),"UTF-8"); String family = new String(CellUtil.cloneFamily(cell),"UTF-8"); String qualifier = new String(CellUtil.cloneQualifier(cell),"UTF-8"); String value = new String(CellUtil.cloneValue(cell),"UTF-8"); System.out.println("[row:"+row+"],[family:"+family+"],[qualifier:"+qualifier+"],[value:"+value+"]"); } } } /** * @param args */public static void main(String[] args) { try { //HbaseDemo.CreateTable("userinfo", "baseinfo");//HbaseDemo.PutData("userinfo", "row2", "baseinfo", "vio2", "驾驶车辆违法信息2:");//HbaseDemo.GetData("userinfo", "row2","baseinfo","vio2"); HbaseDemo.ScanAll("userinfo"); HbaseDemo.ScanAll("userinfo"); } catch (Exception e) { e.printStackTrace(); } } }
- 浏览: 65978 次
- 性别:
- 来自: 北京
相关推荐
Java 操作 Hbase 进行建表、删表以及对数据进行增删改查 一、Hbase 简介 Hbase 是一个开源的、分布式的、基于 column-family 的 NoSQL 数据库。它是基于 Hadoop 的,使用 HDFS 作为其存储层。Hbase 提供了高性能、...
3. 增删改操作 (1)创建一个表 使用 create 命令来创建一个名为 member001 的表,表中包含三个列簇:member_id、address、info。 (2)获取表的描述 使用 describe 命令来获取表 member001 的描述信息。 (3)...
- **监听器**:实时监听HBase表的变更事件,如增删改操作,触发数据同步。 - **索引构建器**:接收监听器传递的变更事件,根据配置的模型构建Elasticsearch的索引文档。 - **传输客户端**:将构建好的索引文档推送到...
HBASE是bigTable,(源代码是Java编写)的...更是弥补了hive不能低延迟、以及行级别的增删改的缺点。 HBASE依赖于hdfs做底层的数据存储 HBASE依赖于MapReduce做数据计算 HBASE依赖于zookeeper做服务协调
4. 表管理:包括增删改表、Region分裂与合并、表的启停等操作。 六、监控与优化 HBase提供了丰富的监控工具,如JMX、Web UI等,用于查看系统状态、性能指标和日志。根据监控数据,可以进行系统调优,如调整Region...
1. **Master节点(HMaster)**:负责管理表和 RegionServer 的分配,监控 RegionServer 的状态,处理 RegionServer 的故障恢复,以及处理表的增删改操作。HMaster 是高可用的,可以有多个实例,确保服务的连续性。 ...
hbase+hive(hbase进行删改的数据维护,hive进行复查查询和导入数据);通过hive创建hbase表,在hive中增加数据,hbase同步增加数据,查看hive的数据。 通过hive创建hbase表,在hbase中增加数据,查看hbase数据。
然而,Hive不支持记录级别的增删改操作,查询延时严重,也不支持事务,主要适用于OLAP(联机分析处理)而不适用于OLTP(联机事务处理)。 接下来,Hive和RDBMS的对比中,我们了解到Hive和传统关系数据库管理系统的...
当MySQL中的数据发生增删改操作时,这些操作会被记录在binlog中。Canal Server读取binlog,解析出相应的SQL语句,然后通过网络传输给Canal Client,最后由Adapter将数据同步到目标系统。 四、Canal部署与配置 1. ...
其工作原理基于MySQL的binlog解析,通过监听MySQL服务器的binlog事件,将其中的DML(增删改)操作转化为结构化的数据,然后推送给订阅者。这种方式保证了数据的一致性和完整性,使得即使在分布式环境下也能实现精确...
此外,Table Evolution特性允许文件组织方式更加灵活,不再局限于特定的目录分区,而且支持列的动态增删改,提高了系统的灵活性。 Upsert操作的基本语法是通过MERGE INTO语句,结合使用USING子句指定源表和目标表,...
Upsert还支持列的增删改,使得文件组织方式更加灵活,不再依赖于固定的目录分区。这种技术的核心是通过MERGE INTO SQL语句实现,根据源表和目标表的匹配条件,执行插入、删除或更新操作。 例如,在GDPR(通用数据...
平台实现架构数据库变更binlog业务变更触发点系统业务活动增删改数据订正人工变更出金结算退款业务系统资金流出拦截业务数据解析存储数据模型转换检测规则判断检测点存储数据存储hbase规则引擎前置sdk解析Groovy解析...
更重要的是,Upsert支持行级别的更新,允许对数据进行插入、删除和更新,适应了数据模式的演变,文件组织方式更加灵活,不再局限于传统的目录分区,并且支持列的动态增删改。 Upsert操作的核心在于`MERGE INTO`语句...
- **订阅与解析**:Canal客户端订阅特定的数据库实例,然后通过解析MySQL的binlog,提取出数据库的DML(增删改)操作。 - **传输与过滤**:根据配置,Canal可以过滤掉不需要同步的事件,只将符合条件的事件传递给...
- 结构化查询语言(Structured Query Language):用于操作关系数据库的标准语言,包括DQL(查询),DML(增删改),DDL(定义),DCL(控制)。 - SQL查询:用于检索满足特定条件的数据。 - 触发器和存储过程:...
- **维护标准**:对标准状态进行管理,包括增删改、审核、草稿、发布、废止等。 - **标准版本查询**:对发布状态的标准进行版本管理。 - **标准导出**:按照当前系统中发布的最新标准或者选择版本来下载标准信息。 ...