当前位置: 首页 > article >正文

【HBase】【大数据技术基础】实验五 HBase基础编程实验

实验五 HBase Shell命令和Java API编程实践

实验目的

  1. 理解HBase在Hadoop体系结构中的角色;
  2. 熟练使用HBase操作常用的Shell命令;
  3. 熟悉HBase操作常用的Java API。

实验平台

  • 操作系统:Linux
  • Hadoop版本:2.6.0或以上版本
  • HBase版本:1.1.2或以上版本
  • JDK版本:1.6或以上版本
  • Java IDE:Eclipse

实验内容和要求

开始实验前,记得先启动环境:

1. 设计Student学生表

根据给出的表格,用HBase Shell模式设计student学生表格。

  • a) 创建学生表
    create 'student', 'name', 'score'
  • b) 插入记录
    • 方式1:有专门的行键

      put 'student','97002','name','','lisi'
      put 'student','97002','score:English','55'

      问题:如何根据姓名查询成绩?

      • 答:可以实现,但很麻烦!
    • 方式2:将姓名作为行键

      create 'student', 'score'
      put 'student','lisi','score:English','55'

      查询

      get 'student','lisi','score:Computer'
  • c) 浏览表的相关信息
    scan 'student'

  • d) 查询zhangsan的Computer成绩
    get 'student','97001','score:Computer'

  • e) 修改lisi的Math成绩,改为95

    put 'student','97002','score:Math','95'

  • f) 查看修改结果

    get 'student','97002','score:Math'

2. 根据上面已经设计出的student,用Hbase API编程。

a) 添加数据:scofield  English:45 Math:89 Computer:100

scofield

45

89

100

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
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.client.Put;
import org.apache.hadoop.hbase.client.Table;

public class HBaseInsert {

    // 三个静态成员对象
    public static Configuration configuration; // 管理HBase的配置信息
    public static Connection connection; // 管理HBase的连接
    public static Admin admin; // 管理HBase数据库的表信息

    public static void main(String[] args) {
        // 使用默认的HBase配置文件创建configuration
        configuration = HBaseConfiguration.create();
        // 连接hbase
        configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase");

        try {
            // 创建连接
            connection = ConnectionFactory.createConnection(configuration);
            // 获取Admin对象
            admin = connection.getAdmin();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            // 插入的信息
            insertRow("student", "scofield", "score", "English", "45");
            insertRow("student", "scofield", "score", "Math", "89");
            insertRow("student", "scofield", "score", "Computer", "100");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 关闭连接
        close();
    }

    public static void insertRow(String tableName, String rowKey, String colFamily,
                                 String col, String val) throws IOException {
        // 获取表对象
        Table table = connection.getTable(TableName.valueOf(tableName));
        // 创建Put对象
        Put put = new Put(rowKey.getBytes());
        // 添加列数据
        put.addColumn(colFamily.getBytes(), col.getBytes(), val.getBytes());
        // 执行插入操作
        table.put(put);
        // 关闭表对象
        table.close();
    }

    // 关闭连接
    public static void close() {
        try {
            if (admin != null) {
                admin.close();
            }
            if (connection != null) {
                connection.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

b) 获取scofield的English成绩信息
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
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.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table;

public class HBaseQuery {

    /**
     * 三个静态成员对象
     */
    public static Configuration configuration; // 管理HBase的配置信息
    public static Connection connection; // 管理HBase的连接
    public static Admin admin; // 管理HBase数据库的表信息

    public static void main(String[] args) {
        // 使用默认的HBase配置文件创建configuration
        configuration = HBaseConfiguration.create();
        // 连接hbase
        configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase");

        try {
            // 连接hbase
            connection = ConnectionFactory.createConnection(configuration);
            // 获取Admin对象
            admin = connection.getAdmin();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            // 获取scofield的English成绩信息
            getData("student", "scofield", "score", "English");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 关闭连接
        close();
    }

    public static void getData(String tableName, String rowKey, String colFamily, String col) throws IOException {
        // 获取表对象
        Table table = connection.getTable(TableName.valueOf(tableName));
        // 创建Get对象
        Get get = new Get(rowKey.getBytes());
        // 添加列
        get.addColumn(colFamily.getBytes(), col.getBytes());
        // 从指定的行的某些单元格中取出相应的值
        Result result = table.get(get);
        // 显示结果信息
        showCell(result);
        // 关闭表对象
        table.close();
    }

    public static void showCell(Result result) {
        // 显示结果信息函数
        Cell[] cells = result.rawCells();
        for (Cell cell : cells) {
            System.out.println("RowName: " + new String(CellUtil.cloneRow(cell)) + " ");
            System.out.println("Timestamp: " + cell.getTimestamp() + " ");
            System.out.println("Column Family: " + new String(CellUtil.cloneFamily(cell)) + " ");
            System.out.println("Column Qualifier: " + new String(CellUtil.cloneQualifier(cell)) + " ");
            System.out.println("Value: " + new String(CellUtil.cloneValue(cell)) + " ");
            System.out.println("--------------------------------");
        }
    }

    // 关闭连接
    public static void close() {
        try {
            if (admin != null) {
                admin.close();
            }
            if (connection != null) {
                connection.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


http://www.kler.cn/a/401423.html

相关文章:

  • 基于Java Springboot外卖平台系统
  • 【LeetCode 题】只出现一次的数字--其余数字都出现3次
  • 深入理解Go语言并发编程:从基础到实践
  • [前端面试]HTML AND CSS
  • 【视觉SLAM】2-三维空间刚体运动的数学表示
  • 基于语法树的SQL自动改写工具开发系列(2)-使用PYTHON进行简单SQL改写的开发实战
  • 华为VPN技术
  • 12万字 | 企业智慧数字化运营平台重构建设项目实施技术方案
  • 【读书笔记-《网络是怎样连接的》- 7】Chapter3_2 路由器
  • 淘宝商品爬虫:Python实战指南
  • PMC要接受什么培训?
  • 【K8S系列】Kubernetes Pod节点ImagePullBackOff 状态及解决方案详解【已解决】
  • CentOS 9 无法启动急救方法
  • 前端框架主要做些什么工作
  • WPF中的登录界面
  • FastDDS之进程内通信
  • 统计学习模型相关知识简记
  • 基于springboot健康医院门诊在线挂号系统源码和论文
  • 2024山西省网络建设运维第十八届职业院校技能大赛解析答案(3. ansible 服务)
  • 计算机网络 (2)计算机网络的类别
  • Java-04 深入浅出 MyBatis - SqlSessionFactory 与 SqlSession DAO与Mapper 代理模式
  • Kubernetes部署Grafana详细教程
  • SpringBoot线程池的使用
  • H.265流媒体播放器EasyPlayer.js H5流媒体播放器如何验证视频播放是否走硬解
  • MyBatis-Plus中使用JSON 类型字段
  • 11.15机器学习_线性回归