HBase新版本Java API编程实战及基本操作方法封装

论坛 期权论坛     
选择匿名的用户   2021-5-26 12:31   433   0
<div class="content" id="articleContent">
<div class="ad-wrap">
  <p><a href="https://my.oschina.net/u/2663968/blog/3061697" style="color:#A00;font-weight:bold;">2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; </a> <img alt="hot3.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-cf0d92129138e2c138e143696168013a.png"></p>
</div>
<div class="markdown_views">
  <div class="article_content tracking-ad">
   <div class="markdown_views">
    <p>我的HBase版本是0.98 <br> 首先说明一下,如果用eclipse操作hbase时,如果报Unknown host错误,找不到主机,是因为你没有配IP地址的映射 <br> 方法是 找到你的系统盘里面的C:\Windows\System32\drivers\etc下的hosts文件,打开,增加一个映射 <br> 加一个映射</p>
    <pre class="brush:prettyprint;toolbar:true"><code class="hljs has-numbering"> 192.168.52.140    master</code>
   

   

   
    </pre>
    <ul><li>1</li></ul>
    <div class="save_code tracking-ad">
     <img alt="18173310_cIne.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-38f2860264e1a0d95d1d6b8382a66a20.png">
    </div>
    <p>话不多说,直接看代码,注释很详细</p>
    <pre class="brush:prettyprint;toolbar:true"><code class="hljs avrasm has-numbering">
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
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.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

public class MyHbaseApi {

    public static void main(String[] args) {
        Admin admin&#61;null;
        Connection con&#61;null;

        try {

            //1.获得配置文件对象
            Configuration conf&#61;HBaseConfiguration.create();
                //设置配置参数
            conf.set(&#34;hbase.zookeeper.quorum&#34;, &#34;192.168.52.140&#34;);
            //2.建立连接
             con&#61;ConnectionFactory.createConnection(conf);
            //3.获得会话
             admin&#61;con.getAdmin();
            //System.out.println(con);
            //System.out.println(admin);
            //4.操作
                //建立数据库
                    //创建表名对象
            TableName tn&#61;TableName.valueOf(&#34;stu&#34;);
                    //a.判断数据库是否存在
            if(admin.tableExists(tn)){
                System.out.println(&#34;&#61;&#61;&#61;&#61;&gt; 表存在,删除表....&#34;);
                //先使表设置为不可编辑
                admin.disableTable(tn);
                //删除表
                admin.deleteTable(tn);
                System.out.println(&#34;表删除成功.....&#34;);
            }
            System.out.println(&#34;&#61;&#61;&#61;&gt;表不存在,创建表......&#34;);
            //创建表结构对象
            HTableDescriptor htd&#61;new HTableDescriptor(tn);
            //创建列族结构对象
            HColumnDescriptor hcd1&#61;new HColumnDescriptor(&#34;fm1&#34;);
            HColumnDescriptor hcd2&#61;new HColumnDescriptor(&#34;fm2&#34;);
            htd.addFamily(hcd1);
            htd.addFamily(hcd2);
            //创建表
            admin.createTable(htd);

            System.out.println(&#34;创建表成功...&#34;);

            //向表中插入数据
                //a.单个插入
            Put put &#61;new Put(Bytes.toBytes(&#34;row01&#34;));//参数是行健row01
            put.addColumn(Bytes.toBytes(&#34;fm1&#34;), Bytes.toBytes(&#34;col1&#34;), Bytes.toBytes(&#34;value01&#34;));

            //获得表对象
            Table table&#61;con.getTable(tn);
            table.put(put);

            //批量插入
            Put put01 &#61;new Put(Bytes.toBytes(&#34;row02&#34;));//参数是行健row02
            put01.addColumn(Bytes.toBytes(&#34;fm2&#34;), Bytes.toBytes(&#34;col2&#34;), Bytes.toBytes(&#34;value02&#34;)).
            addColumn(Bytes.toBytes(&#34;fm2&#34;), Bytes.toBytes(&#34;col3&#34;), Bytes.toBytes(&#34;value03&#34;));

            Put put02 &#61;new Put(Bytes.toBytes(&#34;row03&#34;));//参数是行健row01
            put02.addColumn(Bytes.toBytes(&#34;fm1&#34;), Bytes.toBytes(&#34;col4&#34;), Bytes.toBytes(&#34;value04&#34;));

            List&lt;Put&gt; puts&#61;Arrays.asList(put01,put02);

            //获得表对象
            Table table02&#61;con.getTable(tn);
            table02.put(puts);

        //读取操作
            //scan
            Scan scan&#61;new Scan();
            //获得表对象
            Table table03&#61;con.getTable(tn);
            //得到扫描的结果集
            ResultScanner rs&#61;table03.getScanner(scan);
            for(Result result:rs){
                //得到单元格集合
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

下载期权论坛手机APP