实验03熟悉常用的HBase操作

这篇具有很好参考价值的文章主要介绍了实验03熟悉常用的HBase操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🌊 Hbase相关配置参考网址:
😈http://dblab.xmu.edu.cn/blog/install-hbase/

一、 实验目的

1️⃣ 理解HBase在Hadoop体系结构中的角色;

2️⃣ 熟练使用HBase操作常用的Shell命令;

3️⃣ 熟悉HBase操作常用的Java API;

二、我的环境

操作系统:Linux

虚拟机 :ubuntu

Hadoop版本:2.7.1

HBase版本:1.1.2

JDK版本:1.8版本

Java IDE:IDEA

三、 实验内容

1) 根据下面给出的表格,用Hbase Shell模式设计student学生表格。

a) 设计完后,用scan指令浏览表的相关信息,给出截图。

b) 查询zhangsan 的Computer成绩。给出截图。

c) 修改lisi的Math成绩,改为95。给出截图。

⛵️Student 学生表

name score
English Math Computer
zhangsan 69 86 77
lisi 55 100 88

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

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

mary 45 89 100

b) 获取mary的English成绩信息

四、实验代码和结果(截图展示)

1️⃣
A:实验03熟悉常用的HBase操作
实验03熟悉常用的HBase操作

B:
实验03熟悉常用的HBase操作

C:
实验03熟悉常用的HBase操作
实验03熟悉常用的HBase操作

2️⃣
a:
实验03熟悉常用的HBase操作
实验03熟悉常用的HBase操作

b:查看mary英语成绩:
实验03熟悉常用的HBase操作

​💻代码:文章来源地址https://www.toymoban.com/news/detail-411286.html

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import java.io.IOException;

public class ExampleForHbase{
    public static Configuration configuration;
    public static Connection connection;
    public static Admin admin;

    //主函数中的语句请逐句执行,只需删除其前的//即可,如:执行insertRow时请将其他语句注释
    public static void main(String[] args)throws IOException{
        //创建一个表,表名为Score,列族为sname,course
        //createTable("xsb",new String[]{"name","course"});

        //zhangsan
        //insertRow("xsb", "95001", "name", "", "zhangsan");
        //insertRow("xsb", "95001", "course", "English", "69");
        //insertRow("xsb", "95001", "course", "Math", "86");
        //insertRow("xsb", "95001", "course", "Computer", "77");

        //lisi
        //insertRow("xsb", "95002", "name", "", "lisi");
        //insertRow("xsb", "95002", "course", "English", "55");
        //insertRow("xsb", "95002", "course", "Math", "100");
        //insertRow("xsb", "95002", "course", "Computer", "88");


        //查询表中,行键为95001,列族为course,列为Computer的值
        //getData("xsb", "95001", "course", "Computer");


        //删除表中指定列数据,其行键为95001,列族为course,列为Math
        //deleteRow("xsb", "95001", "course", "Math");
        //xiu gai
        //insertRow("xsb","95001","course","Math","95");


        
    }

    //建立连接
    public static void init(){
        configuration  = HBaseConfiguration.create();
        configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");
        try{
            connection = ConnectionFactory.createConnection(configuration);
            admin = connection.getAdmin();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    //关闭连接
    public static void close(){
        try{
            if(admin != null){
                admin.close();
            }
            if(null != connection){
                connection.close();
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }

    /**
     * 建表。HBase的表中会有一个系统默认的属性作为主键,主键无需自行创建,默认为put命令操作中表名后第一个数据,因此此处无需创建id列
     * @param myTableName 表名
     * @param colFamily 列族名
     * @throws IOException
     */
    public static void createTable(String myTableName,String[] colFamily) throws IOException {

        init();
        TableName tableName = TableName.valueOf(myTableName);

        if(admin.tableExists(tableName)){
            System.out.println("talbe is exists!");
        }else {
            HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
            for(String str:colFamily){
                HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(str);
                hTableDescriptor.addFamily(hColumnDescriptor);
            }
            admin.createTable(hTableDescriptor);
            System.out.println("create table success");
        }
        close();
    }
    /**
     * 删除指定表
     * @param tableName 表名
     * @throws IOException
     */
    public static void deleteTable(String tableName) throws IOException {
        init();
        TableName tn = TableName.valueOf(tableName);
        if (admin.tableExists(tn)) {
            admin.disableTable(tn);
            admin.deleteTable(tn);
        }
        close();
    }

    /**
     * 查看已有表
     * @throws IOException
     */
    public static void listTables() throws IOException {
        init();
        HTableDescriptor hTableDescriptors[] = admin.listTables();
        for(HTableDescriptor hTableDescriptor :hTableDescriptors){
            System.out.println(hTableDescriptor.getNameAsString());
        }
        close();
    }
    /**
     * 向某一行的某一列插入数据
     * @param tableName 表名
     * @param rowKey 行键
     * @param colFamily 列族名
     * @param col 列名(如果其列族下没有子列,此参数可为空)
     * @param val 值
     * @throws IOException
     */
    public static void insertRow(String tableName,String rowKey,String colFamily,String col,String val) throws IOException {
        init();
        Table table = connection.getTable(TableName.valueOf(tableName));
        Put put = new Put(rowKey.getBytes());
        put.addColumn(colFamily.getBytes(), col.getBytes(), val.getBytes());
        table.put(put);
        table.close();
        close();
    }

    /**
     * 删除数据
     * @param tableName 表名
     * @param rowKey 行键
     * @param colFamily 列族名
     * @param col 列名
     * @throws IOException
     */
    public static void deleteRow(String tableName,String rowKey,String colFamily,String col) throws IOException {
        init();
        Table table = connection.getTable(TableName.valueOf(tableName));
        Delete delete = new Delete(rowKey.getBytes());
        //删除指定列族的所有数据
        //delete.addFamily(colFamily.getBytes());
        //删除指定列的数据
        //delete.addColumn(colFamily.getBytes(), col.getBytes());

        table.delete(delete);
        table.close();
        /**
         * 根据行键rowkey查找数据
         * @param tableName 表名
         * @param rowKey 行键
         * @param colFamily 列族名
         * @param col 列名
         * @throws IOException
         */      close();
    }

    public static void getData(String tableName,String rowKey,String colFamily,String col)throws  IOException{
        init();
        Table table = connection.getTable(TableName.valueOf(tableName));
        Get get = new Get(rowKey.getBytes());
        get.addColumn(colFamily.getBytes(),col.getBytes());
        Result result = table.get(get);
        showCell(result);
        table.close();
        close();
    }


    /**
     * 格式化输出
     * @param result
     */
    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("Timetamp:"+cell.getTimestamp()+" ");
            System.out.println("column Family:"+new String(CellUtil.cloneFamily(cell))+" ");
            System.out.println("row Name:"+new String(CellUtil.cloneQualifier(cell))+" ");
            System.out.println("value:"+new String(CellUtil.cloneValue(cell))+" ");
        }
    }
}

到了这里,关于实验03熟悉常用的HBase操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 熟悉常用的HBase操作

    理解HBase在Hadoop体系结构中的角色; 熟练使用HBase操作常用的Shell命令; 操作系统:Linux Hadoop版本:3.1.3 HBase版本:2.2.2 JDK版本:1.8 1.用Hadoop提供的HBase Shell命令实现以下指定功能: 准备工作: 启动hbash: 进入shell: (1)列出HBase所有的表的相关信息,例如表名; (2)在终端打

    2023年04月17日
    浏览(37)
  • 实验2熟悉常用的HDFS操作

    (1)理解HDFS在Hadoop体系结构中的角色; (2)熟练使用HDFS操作常用的Shell命令; (3)熟悉HDFS操作常用的Java API。 (1)操作系统:Linux; (2)Hadoop版本:2.7.4 ; (3)JDK版本1.8; (4)Java IDE:eclipse  。 (一)编程实现以下功能,并利用Hadoop提供的Shell命令完成相同任务:

    2023年04月18日
    浏览(42)
  • 大数据实验 实验二:熟悉HDFS常用操作

    附件中有word版本的实验报告 理解HDFS在Hadoop体系结构中的角色。 熟练使用HDFS操作常用的Shell命令。 熟悉HDFS操作常用的Java API。 Oracle VM VirtualBox虚拟机 系统版本centos7 JDK1.8版本 Hadoop-3.1.3 Windows11 Java IDE:IDEA 1.向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户

    2024年04月12日
    浏览(40)
  • 大数据编程实验二:熟悉常用的HDFS操作

    实验目的 1、理解HDFS在Hadoop体系结构中的角色 2、熟悉使用HDFS操作常用的Shell命令 3、熟悉HDFS操作常用的Java API 实验平台 1、操作系统:Windows 2、Hadoop版本:3.1.3 3、JDK版本:1.8 4、Java IDE:IDEA 前期:一定要先启动hadoop   1、编程实现以下功能,并利用Hadoop提供的Shell命令完成相

    2024年02月08日
    浏览(45)
  • 大数据 | 实验一:大数据系统基本实验 | 熟悉常用的HDFS操作

    1 )理解 HDFS 在 Hadoop 体系结构中的角色。 2 )熟练使用 HDFS 操作常用的 shell 命令。 3 )熟悉 HDFS 操作常用的 Java API。 1 )操作系统:Linux; 2 )Hadoop 版本:3.2.2; 3 )JDK 版本:1.8; 4 )Java IDE:Eclipse。 编程实现 以下功能,并利用 Hadoop 提供的 Shell 命令 完成相同任务 1)向

    2024年02月02日
    浏览(41)
  • 云计算 熟悉常用的LINUX操作和hadoop部署相关操作 实验报告

    《云计算系统架构及应用》实验报告 题目: 熟悉常用的LINUX操作和hadoop部署相关操作 姓名 日期 实验环境:  操作系统:Linux Hadoop版本:2.7.3 实验内容与完成情况: (一)熟悉常用的Linux 操作 请按要求上机实践如下linux基本命令。 cd命令:切换目录 (1)切换到目录 /usr/lo

    2024年02月05日
    浏览(40)
  • 大数据技术原理及应用课实验2 :熟悉常用的HDFS操作

    实验2  熟悉常用的HDFS操作 目录 实验2  熟悉常用的HDFS操作 一、实验目的 二、实验平台 三、实验步骤(每个步骤下均需有运行截图) (一)编程实现以下功能,并利用Hadoop提供的Shell命令完成相同任务: (1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则

    2024年04月14日
    浏览(112)
  • 熟悉常用的HDFS操作(大数据技术原理与应用-第三章实验)

    首先启动Hadoop,命令如下: 在终端输入如下命令,查看 hdfs dfs 总共支持哪些操作: 上述命令执行后,会显示如下的结果: 如果显示 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable ,说明环境变量 JAVA_LIBRARY_PATH 并未定义,首

    2024年02月01日
    浏览(50)
  • 实验二、熟悉常用的HDFS操作(HDFS JavaAPI之读取/上传/删除文件)

    理解HDFS在Hadoop体系结构中的角色 熟练使用HDFS操作常用的shell命令 熟悉HDFS操作常用的Java API 操作系统:CentOS 8 Hadoop版本:3.3.1 jdk版本:1.8 Java IDE:Eclipse 1. 使用Hadoop命令操作分布式文件系统。 新建目录 在本地和hadoop中分别创建文件夹: 在本地创建目录: Hadoop创建目录: 上

    2023年04月08日
    浏览(59)
  • 实验五 熟悉 Hive 的基本操作

    实验环境: 1.操作系统:CentOS 7。 2.Hadoop 版本:3.3.0。 3.Hive 版本:3.1.2。 4.JDK 版本:1.8。 实验内容与完成情况: (1)创建一个内部表 stocks,字段分隔符为英文逗号,表结构如表 A-6 所示。 打开数据库 (2)创建一个外部分区表 dividends(分区字段为 exchange 和 symbol),字段分

    2024年02月05日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包