Error

An error occurred.

Sorry, the page you are looking for is currently unavailable.
Please try again later.

If you are the system administrator of this resource then you should check the error log for details.

Faithfully yours, nginx.

帮助文档(华北一、二)

  • 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


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

  已解决   未解决

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

联系技术专家