第七章:API实现HBase的DML操作

1、插入数据

public static void putData(String tableName, String rk, String cf, String cn, String value) throws IOException {
        //1、获取表对象
        Table table = connection.getTable(TableName.valueOf(tableName));

        //2、创建put对象
        Put put = new Put(Bytes.toBytes(rk));

        //3、给put对象赋值:byte [] family, byte [] qualifier, byte [] value
        put.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn), Bytes.toBytes(value));

        //4、插入数据
        table.put(put);

        //5、关闭表连接
        table.close();
        /*
        * 若要put多个对象有两种方法
        * 1、put.addColumn时多put是可以创建多个对象的
        * 2、设置多个put,插入是插入put的列表
        * */
    }

需要注意的地方有3个:

①:要创建对象需要对表进行修改,就不能用admin了,需要用connection得到table对象对表进行操作

②:要插入数据需要put对象,而put对象需要的值都要是byte[]类型的,所以需要使用HBase提供的工具类Bytes进行类型转换

③:这里不统一关闭资源的原因是,每次操作的表对象可能不同,所以每次使用完都需要关闭资源

测试:

public static void main(String[] args) throws IOException {
        putData("stu2", "1001", "info1", "age", "19");
    }

结果:

插入成功

2、get表中的数据

public static void getData(String tableName, String rk, String cf, String cn) throws IOException {
        //创建表最少要有一个rowkey
        //1、创建表对象
        Table table = connection.getTable(TableName.valueOf(tableName));
        //2、创建get对象
        Get get = new Get(Bytes.toBytes(rk));
        //3.1、给get设置指定列族和列
        get.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn));
        //3.2、给get设置指定列族
//        get.addFamily(Bytes.toBytes(cf));
        //4、将get对象传给table,获取result对象
        Result results = table.get(get);
        //5、打印所需要的值
        for(Cell cell : results.rawCells()){
            System.out.println("CF:" + Bytes.toString(CellUtil.cloneFamily(cell)) +
                ",CN:" + Bytes.toString(CellUtil.cloneQualifier(cell)) +
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sqoop 是一个用于在 Hadoop 生态系统中导入和导出数据的工具。在本关中,我们将学习如何使用 Sqoop 将数据从关系型数据库导入到 HBase 中。 首先,我们需要确保已经在 Hadoop 集群中安装了 Sqoop 和 HBase。然后,我们需要创建一个目标表来存储从关系型数据库中导入的数据。 在 HBase创建表: ``` create 'employees', 'personal', 'professional' ``` 现在,我们可以使用 Sqoop 将数据从关系型数据库中导入到 HBase 中。假设我们要从 MySQL 数据库中导入一个名为 employees 的表,该表包含以下列和数据: | id | name | age | salary | |----|------|-----|--------| | 1 | John | 25 | 50000 | | 2 | Mary | 30 | 60000 | | 3 | Jack | 40 | 70000 | 我们可以使用以下命令将该表导入到 HBase 中: ``` sqoop import --connect jdbc:mysql://localhost/employees --username root --password password --table employees --hbase-table employees --column-family personal --hbase-row-key id --hbase-create-table ``` 该命令将从 MySQL 数据库中选择所有列,并将它们插入到 HBase 表中。我们指定了 HBase 表的名称和列族名称,以及用于 HBase 行键的列。 如果 HBase 表不存在,Sqoop 将自动创建它。我们还指定了一个选项 hbase-create-table,以确保表已经存在,如果表不存在则会创建。如果不使用此选项,则需要手动创建 HBase 表。 我们可以使用以下命令查看导入的数据: ``` hbase shell scan 'employees' ``` 输出应如下所示: ``` ROW COLUMN+CELL 1 column=personal:age, timestamp=1576289403403, value=25 1 column=personal:name, timestamp=1576289403403, value=John 1 column=personal:salary, timestamp=1576289403403, value=50000 2 column=personal:age, timestamp=1576289403403, value=30 2 column=personal:name, timestamp=1576289403403, value=Mary 2 column=personal:salary, timestamp=1576289403403, value=60000 3 column=personal:age, timestamp=1576289403403, value=40 3 column=personal:name, timestamp=1576289403403, value=Jack 3 column=personal:salary, timestamp=1576289403403, value=70000 ``` 我们可以看到,导入的数据已经存储在 HBase 表中。现在,我们可以在 Hadoop 生态系统中使用这些数据进行分析和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值