免费注册
帮助文档(华北一、二)

  • 4.1 使用JAVA读取HBase(实现创建表格、插入数据,展示数据操作)

    此示例需要您先登陆托管Hadoop集群master1节点,以下操作默认在master1节点执行。

    4.1.1 构建JAVA代码

     

    mkdir  -p /data/hbase-example

    cd /data/hbase-example

    touch HbaseJob.java

    HbaseJob.java代码如下

     

    import java.util.ArrayList;

    import java.util.List;

    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.KeyValue;

    import org.apache.hadoop.hbase.client.Delete;

    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.util.Bytes;

    public class HbaseJob {

        static Configuration conf=null;

        static{

            conf=HBaseConfiguration.create();//hbase的配置信息

        }

        public static void main(String[] args)throws Exception {

            HbaseJob t=new HbaseJob();

            t.createTable("person", new String[]{"name","age"});

            t.insertRow("person", "1", "age", "hehe", "100");

            t.insertRow("person", "2", "age", "haha", "101");

            t.showAll("person");

        }

        /***

         * 创建一张表

         * 并指定列簇

         * */

        public void createTable(String tableName,String cols[])throws Exception{

            HBaseAdmin admin=new HBaseAdmin(conf);//客户端管理工具类

            if(admin.tableExists(tableName)){

                System.out.println("此表已经存在.......");

            }else{

                HTableDescriptor table=new HTableDescriptor(tableName);

                for(String c:cols){

                    HColumnDescriptor col=new HColumnDescriptor(c);//列簇名

                    table.addFamily(col);//添加到此表中

                }

                admin.createTable(table);//创建一个表

                admin.close();

                System.out.println("创建表成功!");

            }

        }

        public  void insertRow(String tableName, String row,

                String columnFamily, String column, String value) throws Exception {

            HTable table = new HTable(conf, tableName);

            Put put = new Put(Bytes.toBytes(row));

            put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),

            Bytes.toBytes(value));

            table.put(put);

            table.close();//关闭

            System.out.println("插入一条数据成功!");

        }

        public void showAll(String tableName)throws Exception{

            HTable h=new HTable(conf, tableName);

            Scan scan=new Scan();

            ResultScanner scanner=h.getScanner(scan);

            for(Result r:scanner){

                System.out.println("====");

                for(KeyValue k:r.raw()){

                    System.out.println("行号:  "+Bytes.toStringBinary(k.getRow()));

                    System.out.println("时间戳:  "+k.getTimestamp());

                    System.out.println("列簇:  "+Bytes.toStringBinary(k.getFamily()));

                    System.out.println("列: "+Bytes.toStringBinary(k.getQualifier()));

                    String ss=  Bytes.toString(k.getValue());

                    System.out.println("值:  "+ss);

                }

            }

            h.close();

        }

    }

    4.1.2 构建编译程序

    ● 创建编译目录和文件

     

    cd /data/hbase-example

    touch hbase-test.sh

    ● hbase-test.sh 代码如下:

     

    #!/bin/bash

    HBASE_HOME=/home/hadoop/hbase

    CLASSPATH=.:$HBASE_HOME/conf/hbase-site.xml

    for i in ${HBASE_HOME}/lib/*.jar ;

    do

          CLASSPATH=$CLASSPATH:$i

    done

    #编译程序

    javac -cp $CLASSPATH HbaseJob.java

    #执行程序

    java -cp $CLASSPATH HbaseJob

    4.1.3 执行HBase程序

    编译程序目录下执行

     sh hbase-test.sh

    执行结果如下:

     

    创建表成功!

    插入一条数据成功!

    插入一条数据成功!

    ====

    行号:  1

    时间戳:  1480991139173

    列簇:  age

    列:  hehe

    值:  100

    行号:  2

    时间戳:  1480991139240

    列簇:  age

    列:  haha

    值:  101


文档是否已解决您的问题?

  已解决   未解决

如您有其它疑问,您也可以与我们技术专家联系探讨。

联系技术专家