hbase2.1.x 通过命令编译Java代码

创建目录

在 hadoop1 服务器执行下面命令

创建工程目录:

mkdir /program/hbase-project
cd /program/hbase-project

在根目录下创建test目录:

mkdir test

进入test目录:

cd test

创建bin目录:

mkdir bin

创建src目录:

mkdir src

Java 代码

在 src 目录下创建 HBaseTest.java 文件

cd src

编辑文件:

vim HBaseTest.java

复制粘贴下面内容:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

public class HBaseCRUD {
    private Connection conn;

    public static void main(String[] args) {
        HBaseCRUD h = new HBaseCRUD();
        try {
            h.conn();
            h.createTable("test_hbase");
            h.insertData("test_hbase");
            h.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 创建hbase连接
     * @throws IOException
     */
    public void conn() throws IOException {
        //创建hbase配置对象
        Configuration conf= HBaseConfiguration.create();
        //通过配置对象创建连接
        conn = ConnectionFactory.createConnection(conf);
    }
    public void createTable(String table) throws IOException{
        TableName tableName = TableName.valueOf(table);
        //创建admin对象
        Admin admin = conn.getAdmin();
        if(admin.tableExists(tableName)){
            System.out.println("表已存在");
            return;
        }

        //创建表描述构造器,创建表时,可以设置很多配置
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(tableName);
        //创建列族描述构造器,创建表时,可以设置很多配置
        ColumnFamilyDescriptorBuilder cfdb = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("column1"));
        ColumnFamilyDescriptorBuilder cfdb2 = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("column2"));
        ColumnFamilyDescriptorBuilder cfdb3 = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("column3"));
        //创建列族描述对象
        ColumnFamilyDescriptor cfd = cfdb.build();
        //将列族描述对象传入表描述构造器
        tableDescriptorBuilder.setColumnFamily(cfd);
        tableDescriptorBuilder.setColumnFamily(cfdb2.build());
        tableDescriptorBuilder.setColumnFamily(cfdb3.build());
        //创建列族描述对象
        TableDescriptor td = tableDescriptorBuilder.build();
        //创建表
        admin.createTable(td);
        System.out.println("表" + tableName + "创建成功!");

        admin.close();
    }

    public void insertData(String tableName) throws IOException {
        //获取table对象
        Table table = conn.getTable(TableName.valueOf(tableName));
        //创建put对象,对应put命令,封装rowkey、列族、列名、列值
        Put put = new Put(Bytes.toBytes("112233bbbcccc"));
        // 这里没有指定key
        put.addColumn(Bytes.toBytes("column1"),null,Bytes.toBytes("aaa"));
        put.addColumn(Bytes.toBytes("column2"),null,Bytes.toBytes("bbb"));
        put.addColumn(Bytes.toBytes("column3"),null,Bytes.toBytes("ccc"));

        //执行put命令
        table.put(put);
        //关闭table
        table.close();
        System.out.println("插入数据成功!");
    }
    public void close() throws IOException {
        conn.close();
    }
}

编译代码

进入 test 目录下:

cd /program/hbase-project/test

编译命令:

javac -encoding utf-8 -d bin -cp .:/program/hadoop-3.0.3/share/hadoop/common/lib/*:/program/hbase-2.1.9/lib/* src/HBaseCRUD.java

运行程序

进入 test 目录下:

cd /program/hbase-project/test

运行命令:

java -cp bin:/program/hadoop-3.0.3/share/hadoop/common/lib/*:/program/hbase-2.1.9/lib/* HBaseCRUD

显示如下,表示成功:

查看数据

scan 'test_hbase'

原文出处:/show_1GW2MWHI98JO.html