大数据开发进阶笔记——HBase的常用原子操作Java代码
来源:互联网 发布:中国港口数据 编辑:程序博客网 时间:2024/05/05 10:13
HBase的常用原子操作Java代码:
Append:追加,类似于put操作。
Configurationconf =HBaseConfiguration.create();
conf.set(“hbase.zookeeper.quorum”,”192.168.1.149”);
conf.set(“hbase.zookeeper.property.clientport”,”2181”);
HConnection conn=HConnectionManager.createConnection(conf);
HTableInterfacetable = conn.getTable(“创建的表名”);
Append append = newAppend(Bytes.toBytes(“r1”));
append.add(Bytes.toBytes(“d”), Bytes.toBytes(“a”),Bytes.toBytes(“abcd”));
table.append(append);
table.close();
conn.close();
checkAndPut:检查是否存在参数描述的记录,如果存在,则不写入数据,如果不存在就写入数据。注意:是对某一个row_key的原子操作,不能跨row_key。
Configurationconf =HBaseConfiguration.create();
conf.set(“hbase.zookeeper.quorum”,”192.168.1.149”);
conf.set(“hbase.zookeeper.property.clientport”,”2181”);
HConnection conn=HConnectionManager.createConnection(conf);
HTableInterfacetable = conn.getTable(“创建的表名”);
Put put = new Put(Bytes.toBytes(“r1”));
put.add(Bytes.toBytes(“d”), Bytes.toBytes(“b”),Bytes.toBytes(“bbbb”));
//不会写入,因为之前追加过有记录
table.checkAndPut(Bytes.toBytes(“r1”), Bytes.toBytes(“d”),Bytes.toBytes(“a”), Bytes.toBytes(“abcd”),put);// 参数:row_key,family,column,row_value
//会写入
table.checkAndPut(Bytes.toBytes(“r1”), Bytes.toBytes(“d”),Bytes.toBytes(“a”), Bytes.toBytes(“ad”),put);
table.close();
conn.close();
checkAndDelete:
Configurationconf =HBaseConfiguration.create();
conf.set(“hbase.zookeeper.quorum”,”192.168.1.149”);
conf.set(“hbase.zookeeper.property.clientport”,”2181”);
HConnection conn=HConnectionManager.createConnection(conf);
HTableInterfacetable = conn.getTable(“创建的表名”);
Delete delete = newDelete(Bytes.toBytes(“r1”));
delete.deleteColumns(Bytes.toBytes(“d”), Bytes.toBytes(“a”));
//不会被删
table.checkAndDelete(Bytes.toBytes(“r1”), Bytes.toBytes(“d”),Bytes.toBytes(“a”), Bytes.toBytes(“b”),delete);//参数:是否有row_key,是否有column,是否有row_value,删除对象
//会被删
table.checkAndDelete(Bytes.toBytes(“r1”), Bytes.toBytes(“d”),Bytes.toBytes(“a”), Bytes.toBytes(“bbbb”),delete);
table.close();
conn.close();
计数器
Configurationconf = HBaseConfiguration.create();
conf.set(“hbase.zookeeper.quorum”,”192.168.1.149”);
conf.set(“hbase.zookeeper.property.clientport”,”2181”);
HConnection conn=HConnectionManager.createConnection(conf);
HTableInterfacetable = conn.getTable(“创建的表名”);
lone result = table.incrementColumnValue(Bytes.toBytes(“r1”),Bytes.toBytes(“d”), Bytes.toBytes(“b”), 10);//10是追加计数的值
lone result =table.incrementColumnValue(Bytes.toBytes(“r1”), Bytes.toBytes(“d”), Bytes.toBytes(“b”),0);// 0是追加计数的值
lone result = table.incrementColumnValue(Bytes.toBytes(“r1”),Bytes.toBytes(“d”), Bytes.toBytes(“b”), -5);
lone result =table.incrementColumnValue(Bytes.toBytes(“r1”), Bytes.toBytes(“d”), Bytes.toBytes(“b”),+5);
System.out.print(result);
table.close();
conn.close();
Hbase重要组件——过滤器
Hbase过滤器:Filter:
在Hbase服务端将客户需要过滤掉数据过滤掉,减少传输到客户端的数据量,减轻负担。
//对row_key进行过滤
Configuration conf =HBaseConfiguration.create();
conf.set(“hbase.zookeeper.quorum”,”192.168.1.149”);
conf.set(“hbase.zookeeper.property.clientport”,”2181”);
HConnection conn= HConnectionManager.createConnection(conf);
HTableInterfacetable = conn.getTable(“创建的表名”);
Scan scan = new Scan();
Scan.setCacheBlocks(flase);//产生的数据不会放到Blockcache 里
//Filter filter = newRowFilter(CompareFilter.CompareOp.EQUAL,new BinaryComparator(Bytes.toBytes(“abc”)));//过滤出row_key
//Filter filter = newRowFilter(CompareFilter.CompareOp.EQUAL,newBinaryPrefixComparator(Bytes.toBytes( “ab”)));//过滤出row_key前缀包含ab的
Filter filter = newRowFilter(CompareFilter.CompareOp.EQUAL,new SubstringComparator ( “b”));//row_key包含b的被过滤出来
scan.setFilter(filter);
ResultScannerscanner = table.getScanner(scan);
for(Result result: scanner){
List<Cell> cell = result.listCells();
for(Cell cell:cells){
String rowkey = newString(CellUnit.cloneRow(cell));
String family = newString(CellUnit.cloneFamily(cell));
String column = newString(CellUnit.clonecolumn(cell));
String value = newString(CellUnit.clonecolumn(cell));
System.out.println(rowkey+””+family+” ”+column+” ”+value);
}
}
scanner.close();
table.close();
conn.close();
//对column进行过滤
Configuration conf =HBaseConfiguration.create();
conf.set(“hbase.zookeeper.quorum”,”192.168.1.149”);
conf.set(“hbase.zookeeper.property.clientport”,”2181”);
HConnection conn=HConnectionManager.createConnection(conf);
HTableInterfacetable = conn.getTable(“创建的表名”);
Scan scan = new Scan();
Scan.setCacheBlocks(flase);//产生的数据不会放到Blockcache 里
Filter filter =new QualiFilter(CompareFilter.CompareOp.EQUAL,newBinaryComparator(Bytes.toBytes( “abc”)));//过滤出column为abc的
scan.setFilter(filter);
ResultScannerscanner = table.getScanner(scan);
for(Result result: scanner){
List<Cell> cell = result.listCells();
for(Cell cell:cells){
String rowkey = newString(CellUnit.cloneRow(cell));
String family = newString(CellUnit.cloneFamily(cell));
String column = newString(CellUnit.clonecolumn(cell));
String value = newString(CellUnit.clonecolumn(cell));
System.out.println(rowkey+””+family+” ”+column+” ”+value);
}
}
scanner.close();
table.close();
conn.close();
//FilterList
Configuration conf = HBaseConfiguration.create();
conf.set(“hbase.zookeeper.quorum”,”192.168.1.149”);
conf.set(“hbase.zookeeper.property.clientport”,”2181”);
HConnection conn=HConnectionManager.createConnection(conf);
HTableInterfacetable = conn.getTable(“创建的表名”);
Scan scan = new Scan();
Scan.setCacheBlocks(flase);//产生的数据不会放到Blockcache 里
SingleColumnValueFilterfilter1 = new SingleColumnValueFilter (Bytes.toBytes( “d”),
Bytes.toBytes(“b”),
CompareFilter.CompareOp.EQUAL,
newBinaryPrefixComparator(Bytes.toBytes(“abc”)));//column_family,column,比较符,column_value
filter1.setFilterIfMissing(true);
SingleColumnValueFilterfilter2 = new SingleColumnValueFilter (Bytes.toBytes( “d”),
Bytes.toBytes(“c”),
CompareFilter.CompareOp.EQUAL,
newRegexStringComparator(“1|2|3”));//正则:要么为1要么为2要么为3
filter2.setFilterIfMissing(true);
List<Filter>filters = new ArrayList<Filter>();
filters.add(filter1);
filters.add(filter2);
FilterListfilterlist = new FilterList(filters);
scan.setFilter(filterlist);
ResultScannerscanner = table.getScanner(scan);
for(Result result: scanner){
List<Cell> cell = result.listCells();
for(Cell cell:cells){
String rowkey = newString(CellUnit.cloneRow(cell));
String family = newString(CellUnit.cloneFamily(cell));
String column = newString(CellUnit.clonecolumn(cell));
String value = newString(CellUnit.clonecolumn(cell));
System.out.println(rowkey+””+family+” ”+column+” ”+value);
}
}
scanner.close();
table.close();
conn.close();
- 大数据开发进阶笔记——HBase的常用原子操作Java代码
- Java— 原子操作
- 大数据开发进阶之HBase开发实例介绍
- 大数据 の HBase 进阶
- Java-大数据常用的开发工具
- 《Java并发编程的艺术》笔记四——Java如何实现原子操作.md
- java 操作hbase的数据
- 大数据的存储—HBase
- 大数据开发利器:Hadoop(8) HBase进阶第1讲 HBase API使用
- 大数据开发利器:Hadoop(9) HBase进阶第2讲 HBase过滤器
- 大数据开发进阶
- Hbase原子性操作
- 大数据-hbase shell操作
- java——保证原子性操作的CAS算法
- 数据操作的原子性
- 《深入浅出 Java Concurrency》——原子操作
- 《深入浅出 Java Concurrency》——原子操作
- JAVA多线程中,原子操作的概念——原子操作真的不需要进行同步控制吗?
- 下拉框使用c:if标签进行判断然后使用selected属性实现选择状态
- Python的字符串和编码
- 人不成熟的几大特征
- HDU-4825 Xor Sum &&Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset (Trie树)
- php四种基础排序算法
- 大数据开发进阶笔记——HBase的常用原子操作Java代码
- oracle中的序列生成器
- 《Spark 官方文档》硬件配置
- servlet——servlet入门(二)
- 自定义View
- Android几种常见的内存泄漏
- ListView优化机制及滑动时数据时出现的数据错乱重复问题
- ArcGIS中栅格数据的金字塔详解
- Eclipse 设置中文编码