hbasejava 删除hbase java操作 需要刷新吗

出处:http://blog.csdn.net/long1657
Hadoop添加和删除节点
一.添加节点
(一)添加节点有两种方式,一种是静态添加,关闭hadoop集群,配置相应配置,重启集群(这个就不再重述了)
(二)动态添加,在不重启集群的情况下添加节点
1.设置新datanode与namenode的SSH无密码登陆
2.在hosts添加主机名称,并且把该文件复制到集群中的其他节点上。
3.修改namenode节点上的slaves文件(主要用于下次重启的时候使用)
4.在datanode中启动进程:
sbin/hadoop-daemon.sh start datanode
sbin/yarn-daemon.sh start nodemanager
5.在datanode中启动:start-balancer.sh均衡当前的hdfs块
二.删除节点
1.需要在hdfs-site.xml配置文件中配置:
&property&
&name&dfs.hosts.exclude&/name&
&value&/usr/local/cluster/hadoop-2.2.0/etc/hadoop/exclude&/value&
&/property&
在hadoop 2.2.0的文档中说通过配置dfs.namenode.hosts.exclude,发现没有效果,使用早期版本的配置项dfs.hosts.exclude才有效果
2.在exclude文件中添加需要删除的节点。
然后执行刷新命令:hdfs dfsadmin -refreshNodes
根据hdfs dfsadmin -report可以查看该节点的状况
三.添加HBase节点
在HMaster的regionserver配置文件中添加新节点的host
在新节点中通过下面命令启动HRegionServer:
hbase-daemon.sh start regionserver
可以通过hbase shell和status进行确认
四.删除HBase节点
hbase-daemon.sh stop regionserver
在下线节点前要停止Load Balancer
要下线一台RegionServer可以这样做,当执行graceful_stop脚本的时候,要将Region Load Balancer关掉(否则balancer和下线脚本会在region部署的问题上存在冲突)
graceful_stop.sh HOSTNAME
作者:long1657 发表于 17:44:32
阅读:409 评论:0
相关 [hadoop hbase 删除] 推荐:
- long1657的专栏
Hadoop添加和删除节点. (一)添加节点有两种方式,一种是静态添加,关闭hadoop集群,配置相应配置,重启集群(这个就不再重述了). (二)动态添加,在不重启集群的情况下添加节点. 1.设置新datanode与namenode的SSH无密码登陆. 2.在hosts添加主机名称,并且把该文件复制到集群中的其他节点上.
- ITeye博客
此分享是关于hadoop生态系统的简单介绍包括起源到相对应用. Hadoop和HBase.pdf (2.1 MB). 已有
0 人发表留言,猛击-&&
这里&&-参与讨论. —软件人才免语言低担保 赴美带薪读研.
- ITeye博客
VMware安装多个RedHat Linux操作系统,摘抄了不少网上的资料,基本上按照顺序都能安装好. 在217
216 分别执行 . 在217
216 分别执行 . 4、建hadoop与hbase、zookeeper. 1) hadoop 配置. 加入(不用master做salve).
- CSDN博客系统运维推荐文章
a& 已经配置完成的Hadoop集群.
b& 所需要的软件包. 2&
单独安装的ZooKeeper集群,不基于HBase集群管理.
a& 在master01上解压zookeeper-3.4.4.tar.gz.
b& 修改Zookeeper的配置文件.
- 学着站在巨人的肩膀上
近日查看了相关资料后,梳理了一下用java实现hbase的表创建、数据插入、删除表,代码如下:. 类别: Hadoop
- CSDN博客云计算推荐文章
1.安装ubuntu10.04操作系统. 安装成功后,系统也会有相应提示:. sudo vi /etc/inetd.conf并加入以下一行. sudo vi /etc/xinetd.conf并加入以下内容:. sudo vi /etc/xinetd.d/telnet并加入以下内容:. 重启机器或重启网络服务sudo /etc/init.d/xinetd restart.
- CSDN博客云计算推荐文章
集群环境至少需要3个节点(也就是3台服务器设备):1个Master,2个Slave,节点之间局域网连接,可以相互ping通,下面举例说明,配置节点IP分配如下:. 三个节点均使用centos 6.3系统,为了便于维护,集群环境配置项最好使用相同用户名、用户密码、相同hadoop、hbase、zookeeper目录结构.
- ITeye博客
修改:dataDir=/home/ysc/zookeeper. mkdir /home/ysc/zookeeper(注:dataDir是zookeeper的数据目录,需要手动创建). hbase存在系统时间同步的问题,并且误差要再30s以内. HBase是数据库,会在同一时间使用很多的文件句柄,大多数linux系统使用的默认值1024是不能满足的,还需要修改 hbase 用户的nproc,在压力很大的情况下,如果过低会造成 OutOfMemoryError异常.
- 数据库 - ITeye博客
首先Hbase中的一个“元素”是由行键、列族名、限定符、时间戳唯一标识的并且行键作为数据行在表里的唯一标识,我们只有通过行键来访问列族别无他法. 修改数据:我们先找到要修改的行键把新的数据记录追加到对应的列族中并打上一个新时间戳代表最新版本. 删除数据:插入带有删除标记的行进入,相当于把整个行键所在的行删了.
网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项. 由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎,用来对网络爬虫抓取到的网络资源进行实时的索引和搜索. 搜 索引擎架构在ElasticSearch之上,是一个典型的分布式在线实时交互查询架构,无单点故障,高伸缩、高可用.
坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:@。hbase 使用java api 来truncate hbase表 - 为程序员服务
为程序员服务
使用java api 来truncate hbase表
如下java代码truncate hbase table。
// 首先要获得table的建表信息
HBaseAdmin admin = new HBaseAdmin(yourConfiguration);
HTableDescriptor td = admin.getTableDescriptor(Bytes.toBytes(&yourTableName&);
admin.disableTable(&yourTableName&);
admin.deleteTable(&yourTableName&);
// 重新建表
admin.createTable(td);
您可能的代码
相关聚客文章
荣誉:2088
相关专栏文章问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
core-site.xml&IMG src="file:///C:\Users\Administrator\AppData\Roaming\feiq\RichOle\.bmp"&hbase-site.xml&IMG src="file:///C:\Users\Administrator\AppData\Roaming\feiq\RichOle\.bmp"&我的代码&IMG src="file:///C:\Users\Administrator\AppData\Roaming\feiq\RichOle\.bmp"&&IMG src="file:///C:\Users\Administrator\AppData\Roaming\feiq\RichOle\.bmp"&
报错信息&IMG src="file:///C:\Users\Administrator\AppData\Roaming\feiq\RichOle\.bmp"&&IMG src="file:///C:\Users\Administrator\AppData\Roaming\feiq\RichOle\.bmp"&
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
错误不是很清楚了吗?空指针问题,需要看下为什么是空对象?
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询 - tudou@NorthWind - 博客园
1、搭建环境
& 新建JAVA项目,添加的包有:
&& 有关Hadoop的hadoop-core-0.20.204.0.jar
&& 有关Hbase的hbase-0.90.4.jar、hbase-0.90.4-tests.jar以及Hbase资源包中lib目录下的所有jar包
2、主要程序
Java代码&&
package&com.wujintao.hbase.&&
import&java.io.IOE&&
import&java.util.ArrayL&&
import&java.util.L&&
import&org.apache.hadoop.conf.C&&
import&org.apache.hadoop.hbase.HBaseC&&
import&org.apache.hadoop.hbase.HColumnD&&
import&org.apache.hadoop.hbase.HTableD&&
import&org.apache.hadoop.hbase.KeyV&&
import&org.apache.hadoop.hbase.MasterNotRunningE&&
import&org.apache.hadoop.hbase.ZooKeeperConnectionE&&
import&org.apache.hadoop.hbase.client.D&&
import&org.apache.hadoop.hbase.client.G&&
import&org.apache.hadoop.hbase.client.HBaseA&&
import&org.apache.hadoop.hbase.client.HT&&
import&org.apache.hadoop.hbase.client.HTableP&&
import&org.apache.hadoop.hbase.client.P&&
import&org.apache.hadoop.hbase.client.R&&
import&org.apache.hadoop.hbase.client.ResultS&&
import&org.apache.hadoop.hbase.client.S&&
import&org.apache.hadoop.hbase.filter.F&&
import&org.apache.hadoop.hbase.filter.FilterL&&
import&org.apache.hadoop.hbase.filter.SingleColumnValueF&&
import&org.apache.hadoop.pareOp;&&
import&org.apache.hadoop.hbase.util.B&&
public&class&JinTaoTest&{&&
&&&&public&static&Configuration&&&
&&&&static&{&&
&&&&&&&&configuration&=&HBaseConfiguration.create();&&
&&&&&&&&configuration.set("hbase.zookeeper.property.clientPort",&"2181");&&
&&&&&&&&configuration.set("hbase.zookeeper.quorum",&"192.168.1.100");&&
&&&&&&&&configuration.set("hbase.master",&"192.168.1.100:600000");&&
&&&&public&static&void&main(String[]&args)&{&&
&&&&&&&&//&createTable("wujintao");&&
&&&&&&&&//&insertData("wujintao");&&
&&&&&&&&//&QueryAll("wujintao");&&
&&&&&&&&//&QueryByCondition1("wujintao");&&
&&&&&&&&//&QueryByCondition2("wujintao");&&
&&&&&&&&//QueryByCondition3("wujintao");&&
&&&&&&&&//deleteRow("wujintao","abcdef");&&
&&&&&&&&deleteByCondition("wujintao","abcdef");&&
&&&&&*&创建表&
&&&&&*&@param&tableName&
&&&&public&static&void&createTable(String&tableName)&{&&
&&&&&&&&System.out.println("start&create&table&......");&&
&&&&&&&&try&{&&
&&&&&&&&&&&&HBaseAdmin&hBaseAdmin&=&new&HBaseAdmin(configuration);&&
&&&&&&&&&&&&if&(hBaseAdmin.tableExists(tableName))&{//&如果存在要创建的表,那么先删除,再创建&&
&&&&&&&&&&&&&&&&hBaseAdmin.disableTable(tableName);&&
&&&&&&&&&&&&&&&&hBaseAdmin.deleteTable(tableName);&&
&&&&&&&&&&&&&&&&System.out.println(tableName&+&"&is&exist,detele....");&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&HTableDescriptor&tableDescriptor&=&new&HTableDescriptor(tableName);&&
&&&&&&&&&&&&tableDescriptor.addFamily(new&HColumnDescriptor("column1"));&&
&&&&&&&&&&&&tableDescriptor.addFamily(new&HColumnDescriptor("column2"));&&
&&&&&&&&&&&&tableDescriptor.addFamily(new&HColumnDescriptor("column3"));&&
&&&&&&&&&&&&hBaseAdmin.createTable(tableDescriptor);&&
&&&&&&&&}&catch&(MasterNotRunningException&e)&{&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&catch&(ZooKeeperConnectionException&e)&{&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&catch&(IOException&e)&{&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&&
&&&&&&&&System.out.println("end&create&table&......");&&
&&&&&*&插入数据&
&&&&&*&@param&tableName&
&&&&public&static&void&insertData(String&tableName)&{&&
&&&&&&&&System.out.println("start&insert&data&......");&&
&&&&&&&&HTablePool&pool&=&new&HTablePool(configuration,&1000);&&
&&&&&&&&HTable&table&=&(HTable)&pool.getTable(tableName);&&
&&&&&&&&Put&put&=&new&Put("112233bbbcccc".getBytes());//&一个PUT代表一行数据,再NEW一个PUT表示第二行数据,每行一个唯一的ROWKEY,此处rowkey为put构造方法中传入的值&&
&&&&&&&&put.add("column1".getBytes(),&null,&"aaa".getBytes());//&本行数据的第一列&&
&&&&&&&&put.add("column2".getBytes(),&null,&"bbb".getBytes());//&本行数据的第三列&&
&&&&&&&&put.add("column3".getBytes(),&null,&"ccc".getBytes());//&本行数据的第三列&&
&&&&&&&&try&{&&
&&&&&&&&&&&&table.put(put);&&
&&&&&&&&}&catch&(IOException&e)&{&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&&
&&&&&&&&System.out.println("end&insert&data&......");&&
&&&&&*&删除一张表&
&&&&&*&@param&tableName&
&&&&public&static&void&dropTable(String&tableName)&{&&
&&&&&&&&try&{&&
&&&&&&&&&&&&HBaseAdmin&admin&=&new&HBaseAdmin(configuration);&&
&&&&&&&&&&&&admin.disableTable(tableName);&&
&&&&&&&&&&&&admin.deleteTable(tableName);&&
&&&&&&&&}&catch&(MasterNotRunningException&e)&{&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&catch&(ZooKeeperConnectionException&e)&{&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&catch&(IOException&e)&{&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&&
&&&&&*&根据&rowkey删除一条记录&
&&&&&*&@param&tablename&
&&&&&*&@param&rowkey&
&&&&&public&static&void&deleteRow(String&tablename,&String&rowkey)&&{&&
&&&&&&&&try&{&&
&&&&&&&&&&&&HTable&table&=&new&HTable(configuration,&tablename);&&
&&&&&&&&&&&&List&list&=&new&ArrayList();&&
&&&&&&&&&&&&Delete&d1&=&new&Delete(rowkey.getBytes());&&
&&&&&&&&&&&&list.add(d1);&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&table.delete(list);&&
&&&&&&&&&&&&System.out.println("删除行成功!");&&
&&&&&&&&&&&&&&
&&&&&&&&}&catch&(IOException&e)&{&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&&
&&&&&&&&&&
&&&&&&*&组合条件删除&
&&&&&&*&@param&tablename&
&&&&&&*&@param&rowkey&
&&&&&&*/&&
&&&&&public&static&void&deleteByCondition(String&tablename,&String&rowkey)&&{&&
&&&&&&&&&&&&//目前还没有发现有效的API能够实现&根据非rowkey的条件删除&这个功能能,还有清空表全部数据的API操作&&
&&&&&*&查询所有数据&
&&&&&*&@param&tableName&
&&&&public&static&void&QueryAll(String&tableName)&{&&
&&&&&&&&HTablePool&pool&=&new&HTablePool(configuration,&1000);&&
&&&&&&&&HTable&table&=&(HTable)&pool.getTable(tableName);&&
&&&&&&&&try&{&&
&&&&&&&&&&&&ResultScanner&rs&=&table.getScanner(new&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();&&
&&&&&&&&}&&
&&&&&*&单条件查询,根据rowkey查询唯一一条记录&
&&&&&*&@param&tableName&
&&&&public&static&void&QueryByCondition1(String&tableName)&{&&
&&&&&&&&HTablePool&pool&=&new&HTablePool(configuration,&1000);&&
&&&&&&&&HTable&table&=&(HTable)&pool.getTable(tableName);&&
&&&&&&&&try&{&&
&&&&&&&&&&&&Get&scan&=&new&Get("abcdef".getBytes());//&根据rowkey查询&&
&&&&&&&&&&&&Result&r&=&table.get(scan);&&
&&&&&&&&&&&&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();&&
&&&&&&&&}&&
&&&&&*&单条件按查询,查询多条记录&
&&&&&*&@param&tableName&
&&&&public&static&void&QueryByCondition2(String&tableName)&{&&
&&&&&&&&try&{&&
&&&&&&&&&&&&HTablePool&pool&=&new&HTablePool(configuration,&1000);&&
&&&&&&&&&&&&HTable&table&=&(HTable)&pool.getTable(tableName);&&
&&&&&&&&&&&&Filter&filter&=&new&SingleColumnValueFilter(Bytes&&
&&&&&&&&&&&&&&&&&&&&.toBytes("column1"),&null,&CompareOp.EQUAL,&Bytes&&
&&&&&&&&&&&&&&&&&&&&.toBytes("aaa"));&//&当列column1的值为aaa时进行查询&&
&&&&&&&&&&&&Scan&s&=&new&Scan();&&
&&&&&&&&&&&&s.setFilter(filter);&&
&&&&&&&&&&&&ResultScanner&rs&=&table.getScanner(s);&&
&&&&&&&&&&&&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&(Exception&e)&{&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&&
&&&&&*&组合条件查询&
&&&&&*&@param&tableName&
&&&&public&static&void&QueryByCondition3(String&tableName)&{&&
&&&&&&&&try&{&&
&&&&&&&&&&&&HTablePool&pool&=&new&HTablePool(configuration,&1000);&&
&&&&&&&&&&&&HTable&table&=&(HTable)&pool.getTable(tableName);&&
&&&&&&&&&&&&List&Filter&&filters&=&new&ArrayList&Filter&();&&
&&&&&&&&&&&&Filter&filter1&=&new&SingleColumnValueFilter(Bytes&&
&&&&&&&&&&&&&&&&&&&&.toBytes("column1"),&null,&CompareOp.EQUAL,&Bytes&&
&&&&&&&&&&&&&&&&&&&&.toBytes("aaa"));&&
&&&&&&&&&&&&filters.add(filter1);&&
&&&&&&&&&&&&Filter&filter2&=&new&SingleColumnValueFilter(Bytes&&
&&&&&&&&&&&&&&&&&&&&.toBytes("column2"),&null,&CompareOp.EQUAL,&Bytes&&
&&&&&&&&&&&&&&&&&&&&.toBytes("bbb"));&&
&&&&&&&&&&&&filters.add(filter2);&&
&&&&&&&&&&&&Filter&filter3&=&new&SingleColumnValueFilter(Bytes&&
&&&&&&&&&&&&&&&&&&&&.toBytes("column3"),&null,&CompareOp.EQUAL,&Bytes&&
&&&&&&&&&&&&&&&&&&&&.toBytes("ccc"));&&
&&&&&&&&&&&&filters.add(filter3);&&
&&&&&&&&&&&&FilterList&filterList1&=&new&FilterList(filters);&&
&&&&&&&&&&&&Scan&scan&=&new&Scan();&&
&&&&&&&&&&&&scan.setFilter(filterList1);&&
&&&&&&&&&&&&ResultScanner&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()));&&
&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&rs.close();&&
&&&&&&&&}&catch&(Exception&e)&{&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&&
&注意:可能大家没看到更新数据的操作,其实更新的操作跟添加完全一致,只不过是添加呢rowkey不存在,更新呢rowkey已经存在,并且timstamp相同的情况下,还有就是目前好像还没办法实现hbase数据的分页查询,不知道有没有人知道怎么做
HBase性能优化建议:
&针对前面的代码,有很多不足之处,在此我就不修改上面的代码了,只是提出建议的地方,大家自己加上
& 当你调用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&=&&&
&&&&&&&&ResultScanner&rs&=&&&
&&&&&&&&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)&&
&&&&&&&&}&&
&所以,以上代码有缺陷的地方,感兴趣的同学可以针对优化建议作出相应修改
阅读(...) 评论()

我要回帖

更多关于 java hbase 实例 的文章

 

随机推荐