hbase rowkey实例_HBase 常用类说明和基本操作、案例

论坛 期权论坛     
选择匿名的用户   2021-5-26 12:31   585   0
<div>
<p></p>
<div style="text-align:center;">
  <img alt="fdf7871c17ef3bdbf052574db8da70e8.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-4859985ad40b11cc7cc3d90aa500d7c0.png">
</div>
<p></p>
<div style="text-align:center;">
  <img alt="9121be52d239670f58a20b4d7d169d2e.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-c0a157330b4fc8ea850889c51a96b598.png">
</div>
<p>1.HBaseConfiguration</p>
<ul><li>关系:org.apache.hadoop.hbase.HBaseConfiguration</li><li>作用:通过此类可以对HBase进行配置</li><li>用法实例: Configuration config &#61; HBaseConfiguration.create();</li><li>说明: HBaseConfiguration.create() 默认会从classpath 中查找 hbase-site.xml 中的配置信息,初始化 Configuration。</li></ul>
<p>2.HBaseAdmin </p>
<ul><li>关系:org.apache.hadoop.hbase.client.HBaseAdmin</li><li>作用:提供接口关系HBase 数据库中的表信息</li><li>用法:HBaseAdmin admin &#61; new HBaseAdmin(config); </li></ul>
<p>3.HTableDescriptor</p>
<ul><li>关系:org.apache.hadoop.hbase.HTableDescriptor</li><li>作用:HTableDescriptor 类包含了表的名字以及表的列族信息</li><li>用法:HTableDescriptor htd &#61;new HTableDescriptor(tablename);</li><li> Htd.addFamily(new HColumnDescriptor(“myFamily”));</li></ul>
<p>4.HColumnDescriptor</p>
<ul><li>关系:org.apache.hadoop.hbase.HColumnDescriptor</li><li>作用:HColumnDescriptor 维护列族的信息</li><li>用法:HTableDescriptor htd &#61;new HTableDescriptor(tablename);</li><li> Htd.addFamily(new HColumnDescriptor(“myFamily”));</li></ul>
<p>5.HTable </p>
<ul><li>关系:org.apache.hadoop.hbase.client.HTable</li><li>作用:HTable 和 HBase 的表通信</li><li>用法:HTable tab &#61; new HTable(config,Bytes.toBytes(tablename));</li><li> ResultScanner sc &#61; tab.getScanner(Bytes.toBytes(“familyName”));</li><li>说明:获取表内列族 familyNme 的所有数据。</li></ul>
<p>6.Put</p>
<ul><li>关系:org.apache.hadoop.hbase.client.Put</li><li>作用:获取单个行的数据</li><li>用法:HTable table &#61; new HTable(config,Bytes.toBytes(tablename));</li><li> Put put &#61; new Put(row);</li><li> p.add(family,qualifier,value);</li><li>说明:向表 tablename 添加 “family,qualifier,value”指定的值。</li></ul>
<p>7.Get</p>
<ul><li>关系:org.apache.hadoop.hbase.client.Get</li><li>作用:获取单个行的数据</li><li>用法:HTable table &#61; new HTable(config,Bytes.toBytes(tablename));</li><li> Get get &#61; new Get(Bytes.toBytes(row));</li><li> Result result &#61; table.get(get);</li><li>说明:获取 tablename 表中 row 行的对应数据</li></ul>
<p>8.ResultScanner</p>
<ul><li>关系:Interface</li><li>作用:获取值的接口</li><li>用法:ResultScanner scanner &#61; table.getScanner(Bytes.toBytes(family));</li><li> For(Result rowResult : scanner){<!-- --></li><li> Bytes[] str &#61; rowResult.getValue(family,column);</li><li>}</li><li>说明:循环获取行中列值。</li></ul>
<hr>
<h2>客户端请求过滤器:</h2>
<p><b>1.</b> <b>FilterList </b></p>
<ul><li>FilterList 代表一个过滤器列表,过滤器间具有</li><li>FilterList.Operator.MUST_PASS_ALL 和</li><li>FilterList.Operator.MUST_PASS_ONE 的关系,下面展示一个过滤器的 “或”关系。</li><li>下面FilterList 列表中检查同一属性的&#39;value1&#39; 或&#39;value2&#39; 。</li></ul>
<div class="blockcode">
  <pre class="blockcode"><code>FilterList list &#61; new FilterList(FilterList.Operator.MUST_PASS_ONE);
SingleColumnValueFilter filter1 &#61; new SingleColumnValueFilter(Bytes.toBytes(“cfamily”), Bytes.toBytes(“column”),CompareOp.EQUAL,Bytes.toBytes(&#34;value1&#34;));
list.add(filter1);
SingleColumnValueFilter filter2 &#61; new SingleColumnValueFilter(Bytes.toBytes(“cfamily”), Bytes.toBytes(“column”), CompareOp.EQUAL, Bytes.toBytes(&#34;value2&#34;));
List.add(filter2);</code></pre>
</div>
<p><b>2.</b> <b>SingleColumnValueFilter </b></p>
<ul><li>SingleColumnValueFilter 用于测试列值相等 (CompareOp.EQUAL ), 不等 (CompareOp.NOT_EQUAL),或范围 (e.g., CompareOp.GREATER). 下面示例检查列值和字符串&#39;my values&#39; 相等...</li></ul>
<div class="blockcode">
  <pre class="blockcode"><code>SingleColumnValueFilter filter &#61; new SingleColumnValueFilter(Bytes.toBytes(“cFamily”), Bytes.toBytes(“column”), CompareOp.EQUAL, Bytes.toBytes(&#34;values&#34;));
scan.setFilter(filter);</code></pre>
</div>
<p><b>3.</b> <b>ColumnPrefixFilter</b></p>
<ul><li>ColumnPrefixFilter 用于指定列名前缀值相等</li></ul>
<div class="blockcode">
  <pre class="blockcode"><code>Byte[] prefix &#61; Bytes.toBytes(“values”);
Filter f &#61; new ColumnPrefixFilter(prefix);
scan.setFilter(f);</code></pre>
</div>
<p><b>4.</b> <b>MultipleColumnPrefixFilter</b></p>
<ul><li>MultipleColumnPrefixFilter 和 ColumnPrefixFilter 行为差不多,但可以指定多个前缀。</li></ul>
<div class="blockcode">
  <pre class="blockcode"><code>byte[][] prefixes &#61; new byte[][] {Bytes.toBytes(&#34;value1&#34;), Bytes.toBytes(&#34;value2&#34;)};
Filter f &#61; new MultipleColumnPrefixFilter(prefixes);
scan.setFilter(f);</code
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP