12.21熟悉常用的HBase操作1

1.实验目的

1理解HBaseHadoop体系结构中的角色;

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

3熟悉HBase操作常用的Java API

2.实验平台

1操作系统:Linux(建议Ubuntu16.04Ubuntu18.04);

2Hadoop版本:3.1.3

3HBase版本:2.2.2

4JDK版本:1.8

5Java IDEEclipse

3. 实验步骤

(一)编程实现以下指定功能,并用Hadoop提供的HBase Shell命令完成相同任务:

(1) 列出HBase所有的表的相关信息,例如表名;

1.List

 

2.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;

 

public class ListTables {

    public static void main(String[] args) throws Exception {

        org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create();

        try (Connection connection = ConnectionFactory.createConnection(config);

             Admin admin = connection.getAdmin()) {

            for (String tableName : admin.listTableNames()) {

                System.out.println("Table Name: " + tableName);

            }

        }

    }

}

(2) 在终端打印出指定的表的所有记录数据;

1.scan 'your_table_name'

2.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.client.Result;

import org.apache.hadoop.hbase.client.ResultScanner;

import org.apache.hadoop.hbase.client.Scan;

import org.apache.hadoop.hbase.client.Table;

 

public class ScanTable {

    public static void main(String[] args) throws Exception {

        org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create();

        try (Connection connection = ConnectionFactory.createConnection(config);

             Table table = connection.getTable("your_table_name")) {

            Scan scan = new Scan();

            ResultScanner scanner = table.getScanner(scan);

            for (Result result : scanner) {

                System.out.println(result);

            }

        }

    }

}

 

(3) 向已经创建好的表添加和删除指定的列族或列;

  1. 添加:alter 'your_table_name', {NAME => 'new_column_family'}

删除:alter 'your_table_name', {NAME => 'column_family_to_delete', METHOD => 'delete'}

2.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;

 

public class ModifyTable {

    public static void main(String[] args) throws Exception {

        org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create();

        try (Connection connection = ConnectionFactory.createConnection(config);

             Admin admin = connection.getAdmin()) {

            // 添加列族

            admin.addColumnFamily("your_table_name", "new_column_family");

            // 删除列族

            admin.deleteColumn("your_table_name", "column_family_to_delete");

        }

    }

}

(4) 清空指定的表的所有记录数据;

1.truncate 'your_table_name'

2.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;

 

public class TruncateTable {

    public static void main(String[] args) throws Exception {

        org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create();

        try (Connection connection = ConnectionFactory.createConnection(config);

             Admin admin = connection.getAdmin()) {

            admin.disableTable("your_table_name");

            admin.truncateTable("your_table_name", false);

        }

    }

}

 

(5) 统计表的行数。

  1. count 'your_table_name'

2.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.client.ResultScanner;

import org.apache.hadoop.hbase.client.Scan;

import org.apache.hadoop.hbase.client.Table;

 

public class CountRows {

    public static void main(String[] args) throws Exception {

        org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create();

        try (Connection connection = ConnectionFactory.createConnection(config);

             Table table = connection.getTable("your_table_name")) {

            Scan scan = new Scan();

            ResultScanner scanner = table.getScanner(scan);

            int rowCount = 0;

            for (Result result : scanner) {

                rowCount++;

            }

            System.out.println("Row count: " + rowCount);

        }

    }

}

posted @     阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示