1. 使用 API 在 HBase 中创建 Stu_Class 表,并在 Hbase shell 中展示所有的表。

代码:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
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.TableName;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;

public class CreateStuClassTable {

    private static final byte[] INFO_CF = Bytes.toBytes("class_info");

    public static void main(String[] args) throws Exception {
        Configuration conf = HBaseConfiguration.create();
        Connection conn = ConnectionFactory.createConnection(conf);
        Admin admin = conn.getAdmin();

        TableName tableName = TableName.valueOf("Stu_Class");

        if (admin.tableExists(tableName)) {
            System.out.println(tableName.getNameAsString() + " already exists!");
        } else {
            TableDescriptorBuilder tableDescBuilder = TableDescriptorBuilder.newBuilder(tableName);

            ColumnFamilyDescriptor cfDesc = ColumnFamilyDescriptorBuilder.newBuilder(INFO_CF).build();
            tableDescBuilder.setColumnFamily(cfDesc);

            TableDescriptor tableDesc = tableDescBuilder.build();

            admin.createTable(tableDesc);

            System.out.println(tableName.getNameAsString() + " created successfully!");
        }

        admin.close();
        conn.close();
    }
}

命令:

无需在 HBase shell 中执行任何命令。

结果截图:

image-20211123150035740

  1. 使用 API 将数据插入到表中

代码:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

public class InsertDataToStuClassTable {

    private static final byte[] INFO_CF = Bytes.toBytes("class_info");
    private static final byte[] NAME_COL = Bytes.toBytes("name");
    private static final byte[] AGE_COL = Bytes.toBytes("age");
    private static final byte[] SEX_COL = Bytes.toBytes("sex");
    private static final byte[] CID_COL = Bytes.toBytes("cid");
    private static final byte[] CNAME_COL = Bytes.toBytes("cname");

    public static void main(String[] args) throws Exception {
        Configuration conf = HBaseConfiguration.create();
        Connection conn = ConnectionFactory.createConnection(conf);

        TableName tableName = TableName.valueOf("Stu_Class");

        Put put1 = new Put(Bytes.toBytes("1001"));
        put1.addColumn(INFO_CF, NAME_COL, Bytes.toBytes("Tom"));
        put1.addColumn(INFO_CF, AGE_COL, Bytes.toBytes("25"));
        put1.addColumn(INFO_CF, SEX_COL, Bytes.toBytes("male"));
        put1.addColumn(INFO_CF, CID_COL, Bytes.toBytes("3-105"));
        put1.addColumn(INFO_CF, CNAME_COL, Bytes.toBytes("计算机导论"));

        Put put2 = new Put(Bytes.toBytes("1002"));
        put2.addColumn(INFO_CF, NAME_COL, Bytes.toBytes("Arie"));
        put2.addColumn(INFO_CF, AGE_COL, Bytes.toBytes("23"));
        put2.addColumn(INFO_CF, SEX_COL, Bytes.toBytes("male"));
        put2.addColumn(INFO_CF, CID_COL, Bytes.toBytes("3-245"));
        put2.addColumn(INFO_CF, CNAME_COL, Bytes.toBytes("操作系统"));

        Put put3 = new Put(Bytes.toBytes("1003"));
        put3.addColumn(INFO_CF, NAME_COL, Bytes.toBytes("Jim"));
        put3.addColumn(INFO_CF, AGE_COL, Bytes.toBytes("17"));
        put3.addColumn(INFO_CF, SEX_COL, Bytes.toBytes("female"));
        put3.addColumn(INFO_CF, CID_COL, Bytes.toBytes("6-166"));
        put3.addColumn(INFO_CF, CNAME_COL, Bytes.toBytes("数字电路"));

        Put put4 = new Put(Bytes.toBytes("1004"));
        put4.addColumn(INFO_CF, NAME_COL, Bytes.toBytes("Lily"));
        put4.addColumn(INFO_CF, AGE_COL, Bytes.toBytes("21"));
        put4.addColumn(INFO_CF, SEX_COL, Bytes.toBytes("female"));
        put4.addColumn(INFO_CF, CID_COL, Bytes.toBytes("3-245"));
        put4.addColumn(INFO_CF, CNAME_COL, Bytes.toBytes("操作系统"));

        conn.getTable(tableName).put(put1);
        conn.getTable(tableName).put(put2);
        conn.getTable(tableName).put(put3);
        conn.getTable(tableName).put(put4);

        conn.close();
    }
}

命令:

无需在 HBase shell 中执行任何命令。

结果截图:

无。

  1. 使用 Shell 命令查询表中所有数据

命令:

scan 'Stu_Class'

结果截图:

image-20211123151647345

  1. 使用 Shell 将 1003 行的 cname 改为 网络技术,并查询 1003 行修改后的数据

命令:

put 'Stu_Class', '1003', 'class_info:cname', '网络技术'
get 'Stu_Class', '1003'

结果截图:

image-20211123152306492

  1. 使用 API 查询选修课程为 3-245 的学生信息

代码:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.filter.CompareFilter;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.filter.BinaryComparator;
import org.apache.hadoop.hbase.util.Bytes;

public class QueryStuClassTable {

    private static final byte[] INFO_CF = Bytes.toBytes("class_info");
    private static final byte[] NAME_COL = Bytes.toBytes("name");
    private static final byte[] AGE_COL = Bytes.toBytes("age");
    private static final byte[] SEX_COL = Bytes.toBytes("sex");
    private static final byte[] CID_COL = Bytes.toBytes("cid");
    private static final byte[] CNAME_COL = Bytes.toBytes("cname");

    public static void main(String[] args) throws Exception {
        Configuration conf = HBaseConfiguration.create();
        Connection conn = ConnectionFactory.createConnection(conf);

        TableName tableName = TableName.valueOf("Stu_Class");

        Scan scan = new Scan();
        SingleColumnValueFilter filter = new SingleColumnValueFilter(
            INFO_CF,
            CID_COL,
            CompareFilter.CompareOp.EQUAL,
            new BinaryComparator(Bytes.toBytes("3-245"))
        );
        scan.setFilter(filter);

        ResultScanner scanner = conn.getTable(tableName).getScanner(scan);

        for (Result result : scanner) {
            String rowkey = Bytes.toString(result.getRow());
            String name = Bytes.toString(result.getValue(INFO_CF, NAME_COL));
            String age = Bytes.toString(result.getValue(INFO_CF, AGE_COL));
            String sex = Bytes.toString(result.getValue(INFO_CF, SEX_COL));
            String cid = Bytes.toString(result.getValue(INFO_CF, CID_COL));
            String cname = Bytes.toString(result.getValue(INFO_CF, CNAME_COL));

            System.out.println("rowkey: " + rowkey + ", name: " + name + ", age: " + age + ", sex: " + sex + ", cid: " + cid + ", cname: " + cname);
        }

        scanner.close();
        conn.close();
    }
}

命令:

无需在 HBase shell 中执行任何命令。

结果截图:

![image-20211123153128706](https://i.loli.net/2021/11/23/4cV3TzPj2qJ5KtW.png

Stu_Classbasic_info class_infoname age sex cid cname1001 Tom 25 male 3-105 计算机导论1002 Arie 23 male 3-245 操作系统1003 Jim 17 female 6-166 数字电路1004 Lily 21 female 3-245 操作系统1、使用 API 在 HBase 中创建 Stu_Class 表并

原文地址: https://www.cveoy.top/t/topic/gA69 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录