问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样使用实现HBase的between and查询

发布网友 发布时间:2022-05-06 08:46

我来回答

2个回答

懂视网 时间:2022-05-06 13:08

Hbase ValueFilter用于过滤值 package com.fatkun.filter.comparison;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.HColumnDescriptor;impo

Hbase ValueFilter用于过滤值

package com.fatkun.filter.comparison;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
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.filter.BinaryComparator;
import org.apache.hadoop.hbase.filter.CompareFilter;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.SubstringComparator;
import org.apache.hadoop.hbase.filter.ValueFilter;
import org.apache.hadoop.hbase.util.Bytes;
public class TestHbaseValueFilter {
	String tableName = "test_value_filter";
	Configuration config = HBaseConfiguration.create();
	/**
	 * 部分代码来自hbase权威指南
	 * 
	 * @throws IOException
	 */
	public void testFilter() throws IOException {
		HTable table = new HTable(config, tableName);
		Scan scan = new Scan();
		System.out.println("只列出值包含data1的列");
		Filter filter1 = new ValueFilter(CompareFilter.CompareOp.EQUAL,
				new SubstringComparator("data1"));
		scan.setFilter(filter1);
		ResultScanner scanner1 = table.getScanner(scan);
		for (Result res : scanner1) {
			System.out.println(res);
		}
		scanner1.close();
		System.out.println("get也可以设置filter");
		Get get1 = new Get(Bytes.toBytes("row003"));
		get1.setFilter(filter1);
		Result result1 = table.get(get1);
		System.out.println("Result of get(): " + result1);
	}
	/**
	 * 初始化数据
	 */
	public void init() {
		// 创建表和初始化数据
		try {
			HBaseAdmin admin = new HBaseAdmin(config);
			if (!admin.tableExists(tableName)) {
				HTableDescriptor htd = new HTableDescriptor(tableName);
				HColumnDescriptor hcd1 = new HColumnDescriptor("data1");
				htd.addFamily(hcd1);
				HColumnDescriptor hcd2 = new HColumnDescriptor("data2");
				htd.addFamily(hcd2);
				HColumnDescriptor hcd3 = new HColumnDescriptor("data3");
				htd.addFamily(hcd3);
				admin.createTable(htd);
			}
			HTable table = new HTable(config, tableName);
			table.setAutoFlush(false);
			int count = 50;
			for (int i = 1; i <= count; ++i) {
				Put p = new Put(String.format("row%03d", i).getBytes());
				p.add("data1".getBytes(), String.format("col%01d", i % 10)
						.getBytes(), String.format("data1%03d", i).getBytes());
				p.add("data2".getBytes(), String.format("col%01d", i % 10)
						.getBytes(), String.format("data2%03d", i).getBytes());
				p.add("data3".getBytes(), String.format("col%01d", i % 10)
						.getBytes(), String.format("data3%03d", i).getBytes());
				table.put(p);
			}
			table.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		TestHbaseValueFilter test = new TestHbaseValueFilter();
		test.init();
		test.testFilter();
	}
}

热心网友 时间:2022-05-06 10:16

其实你即使这么用得到了想要的效果,但是这么干也不对!不要通过value来过滤,效率非常低。如果有这种range的查找,一定要在rowkey上下功夫。设计好rowkey才是关键。因为hbase的rowkey是按顺序码放的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 楼梯的水泥台阶上可以铺地板革吗 手机腾讯会议共享屏幕播放视频没声 腾讯会议共享屏幕没声音怎么办 跨越的跨能组什么组词 在退货退款理由退运费 会把钱全退回来吗 横跨的跨怎么组词 跨怎么组词至少组二个 跨换偏旁组词并造句 跨组三个词并造句 苹果8的耳机孔在哪里? 新人拍婚纱照一老人为强行讨“喜钱”总抢镜,老人的行为是否违法? 蚂蚁财富的开工讨彩头活动,大家有参与么? 北京哪里有好的犬舍? 注册商标代理公司需要什么材料 商标代理公司 我真的好喜欢雪橇犬,我喜欢雪橇犬的有神蓝眼睛,雪橇犬狼一样的面神。雪橇犬尖尖的耳朵,健壮的身形。 怎么判断商标代理公司是不是靠谱?注册商标要准备什么资料? 家里想养只大型犬养什么品种较好? 请问怎么判断商标代理公司是否正规?急! 懂阿拉斯加雪橇犬的进 哈士奇多少钱?{带家族血统证} 注册商标委托代理机构有什么优势吗? 请帮我的雪橇犬取个名字,,。。 淘宝退款运费会一起退回吗 跨可以怎么组词足字旁的 “跨”的近义词有哪些? 只退款后会不会退运费? 退货退款运费险会不会退 淘宝中购物,快递不包邮,要花费5块钱,那申请退货退款的时候,这个5元运费能退回来吗? 会计做账的技巧 蜂蜜包装的基本要求有哪些 用袋子包装蜂蜜,是用什么膜的材料好呢 真假蜂蜜? 苹果6s plus强制解锁 解锁吗 蜂蜜包装瓶上根据什么在前面标有如椴槐蜂蜜枣花蜂蜜等 蜂蜜是用什么材质的包装最好 蜂蜜运输怎么包装好? 孩子喝什么蜂蜜比较好 哪位高人能指点一下,如何领取百度网盘,2T免费内存。 OPPO reno ace解锁页面下面的热点新闻怎么关闭? 属鸡2017年运势及运程 115云盘怎么领内存? 国行I9500如何在官网免费领取一个8G的内存卡