HBase点滴

本文详细介绍HBase的操作流程,包括配置加载、表创建、数据插入、表实例获取及查询等核心步骤,并提供最佳实践建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)设备

  当你调用create办法时将会加载两个设备文件:hbase-default.xml and hbase-site.xml,哄骗的是当前的java类路径, 代码中configuration设置的这些设备将会覆盖hbase-default.xml和hbase-site.xml中雷同的设备,若是两个设备文件都存在并且都设置好了响应参上方的属性下面的属性即可


2)关于建表

public void createTable(HTableDescriptor desc)

HTableDescriptor 代表的是表的schema, 供给的办法中斗劲有效的有

setMaxFileSize,指定最大的region size


setMemStoreFlushSize 指定memstore flush到HDFS上的文件大小


增长family经由过程 addFamily办法


 



public void addFamily(final HColumnDescriptor family)

HColumnDescriptor 代表的是column的schema,供给的办法斗劲常用的有


setTimeToLive:指定最大的TTL,单位是ms,过期数据会被主动删除。


setInMemory:指定是否放在内存中,对小表有效,可用于进步效力。默认封闭


setBloomFilter:指定是否应用BloomFilter,可进步随机查询效力。默认封闭


setCompressionType:设定命据紧缩类型。默认无紧缩。


setMaxVersions:指定命据最大保存的版本个数。默认为3。


 重视的是,一般我们不去setInMemory为true,默认是封闭的


 


3)关于入库

官方建议

 table.setAutoFlush(false); //数据入库之前先设置此项为false

 table.setflushCommits();//入库完成后,手动刷入数据


重视:

在入库过程中,put.setWriteToWAL(true/flase);

关于这一项若是不欲望多量数据在存储过程中丧失,建议设置为true,若是仅是在测试练习训练阶段,为了节俭入库时候建议设置为false


 4)关于获取表实例

HTablePool pool = new HTablePool(configuration, Integer.MAX_VALUE);

HTable table = (HTable) pool.getTable(tableName);

建议用表连接池的体式格式获取表,具体池有什么感化,我想用过数据库连接池的同窗都知道,我就不再反复

不建议应用new HTable(configuration,tableName);的体式格式获取表


5)关于查询

 建议每个查询语句都放入try catch语句块,并且finally中要进行封闭ResultScanner实例以及将不应用的表从头放入到HTablePool中的操纵,具体做法如下

Java代码 

 public static void QueryAll(String tableName) {  
        HTablePool pool = new HTablePool(configuration, Integer.MAX_VALUE);  
HTable table = null; 
ResultScanner rs = null; 
try { 
Scan scan = new Scan();  
table = (HTable) pool.getTable(tableName);  
rs = table.getScanner(scan);  
for (Result r : rs) {  
System.out.println("获获得rowkey:" + new String(r.getRow()));  
for (KeyValue keyValue : r.raw()) {  
System.out.println("列:" + new String(keyValue.getFamily())  
+ "====值:" + new String(keyValue.getValue()));  
}  
}  
    } catch (IOException e) {  
            e.printStackTrace();  
    }finally{  
            rs.close();// 最后还得封闭  
            pool.putTable(table); //实际应用过程中,pool获取实例的体式格式应当抽取为单例模式的,不该在每个办法都从头获取一次(单例熟悉打听?就是抽取到专门获取pool的逻辑类中,具体逻辑为若是pool存在着直接应用,若是不存在则new)  
    }  
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值