【HelloHBase】Hbase-2.1.0 首个操作程序及调试过程

2023-12-21 14:38

本文主要是介绍【HelloHBase】Hbase-2.1.0 首个操作程序及调试过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 源码

package lsq.HelloHBase;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.mortbay.log.Log;

 

public class Chapter4 {

    public static Configuration configuration;
    public static Connection connection;
    public static Admin admin;
    public static void main(String[] args) throws IOException {
        createTable("student",new String[] {"score"});
        insertData("student","Jack","score","English","69");
        insertData("student","Jack","score","Math","86");
        insertData("student","Jack","score","Computer","77");

        getData("student","Jack","score","English");
        
    }
    @SuppressWarnings("deprecation")
    public static void init() {
        configuration = HBaseConfiguration.create();
        //configuration.setConfiguration("hbase.rootdir","hdfs://idx046:9000/hbase");
        try {
            //connection = ConnectionFactory.createConnection(configuration);
            connection = ConnectionFactory.createConnection();
            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();
        }
    }
    public static void createTable(String myTableName, String[] colFamily) throws IOException {
        init();
        TableName tableName = TableName.valueOf(myTableName);
        if ( admin.tableExists(tableName )) {
            System.out.println("table exists!");
        }else {
            @SuppressWarnings("deprecation")
            HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
            for (String str: colFamily) {
                HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(str);
                hTableDescriptor.addFamily(hColumnDescriptor);
            }
            admin.createTable(hTableDescriptor);
        }
        close();
    }
    public static void insertData(String tableName,String rowkey,String colFamily, String col, String value) throws IOException {
        init();
        Table table = connection.getTable(TableName.valueOf(tableName));
        Put put = new Put(Bytes.toBytes(rowkey));
        put.addColumn(Bytes.toBytes(colFamily), Bytes.toBytes(col),Bytes.toBytes(value));
        table.put(put);
        table.close();
        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(Bytes.toBytes(rowkey));
        get.addColumn(Bytes.toBytes(colFamily), Bytes.toBytes(col) );
        Result result = table.get(get);
        String msg = new String(result.getValue(colFamily.getBytes(),col==null?null:col.getBytes()));
        System.out.println(msg);
        Log.info(msg );
        table.close();
        close();
    }
}

2 调试过程

问题#1


/*
[lsq@idx046 ~/data]$ hadoop jar HelloHBase-0.0.1-SNAPSHOT.jar lsq.HelloHBase.Chapter4
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/client/TableDesc
riptor    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.client.TableDescriptor
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 4 more

原因: 缺少 org/apache/hadoop/hbase/client/ ??
 编辑 pom.xml  , 添加依赖包复制:
 <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.0</version>
<executions>
    <execution>
        <id>copy-dependencies</id>
        <phase>prepare-package</phase>
        <goals>
            <goal>copy-dependencies</goal>
        </goals>
        <configuration>
            <!-- ${project.build.directory}为Maven内置变量,缺省为target -->
            <outputDirectory>${project.build.directory}/classes/lib</outputDirectory>
    <!-- 表示是否不包含间接依赖的包  -->
            <excludeTransitive>true</excludeTransitive>
    <!-- 表示复制的jar文件去掉版本信息 -->
         <stripVersion>true</stripVersion>
       </configuration>
  </execution>
</executions>
</plugin>

OK

 */

问题#2


/*
[lsq@idx046 ~/data]$ hadoop jar HelloHBase-0.0.1-SNAPSHOT.jar lsq.HelloHBase.Chapter4
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hbase/thirdparty/com/google/c
ommon/cache/CacheLoader    at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:202)    at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:114)    at lsq.HelloHBase.Chapter4.init(Chapter4.java:31)
    at lsq.HelloHBase.Chapter4.createTable(Chapter4.java:50)
    at lsq.HelloHBase.Chapter4.main(Chapter4.java:18)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)

这篇关于【HelloHBase】Hbase-2.1.0 首个操作程序及调试过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/520375

相关文章

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

SpringBoot 整合 Grizzly的过程

《SpringBoot整合Grizzly的过程》Grizzly是一个高性能的、异步的、非阻塞的HTTP服务器框架,它可以与SpringBoot一起提供比传统的Tomcat或Jet... 目录为什么选择 Grizzly?Spring Boot + Grizzly 整合的优势添加依赖自定义 Grizzly 作为

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

springboot整合gateway的详细过程

《springboot整合gateway的详细过程》本文介绍了如何配置和使用SpringCloudGateway构建一个API网关,通过实例代码介绍了springboot整合gateway的过程,需要... 目录1. 添加依赖2. 配置网关路由3. 启用Eureka客户端(可选)4. 创建主应用类5. 自定

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

SpringBoot整合InfluxDB的详细过程

《SpringBoot整合InfluxDB的详细过程》InfluxDB是一个开源的时间序列数据库,由Go语言编写,适用于存储和查询按时间顺序产生的数据,它具有高效的数据存储和查询机制,支持高并发写入和... 目录一、简单介绍InfluxDB是什么?1、主要特点2、应用场景二、使用步骤1、集成原生的Influ