Java连接Hbase的项目实践

 更新时间:2024年01月11日 10:30:06   作者:枫叶梨花  
HBase是基于Hadoop的高可靠、高性能、面向列的NoSQL数据库,它提供了对海量数据的存储和实时读写的能力,本文主要介绍了Java连接Hbase的项目实践,具有一定的参考价值,感兴趣的可以了解一下

我在网上试 了很多代码,但是大部分都不能实现,Java连接Hbase,一直报一个错

java.util.concurrent.ExecutionException: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /hbase/hbaseid

一直也不清楚为什么。后面各种尝试,最后尝试出来了,能正常连接hbase,但是也不知道为啥能出来,所以该代码可能只能解决我自己的问题,其他人的问题请谨慎参考,不保证准确与否,因为我也不知道为什么????

引入Jar,本公司使用的Hbase是2.0.2.1.7.x,所以我使用的Jar也是2.0.2版本 ,根据实际情况引入,然后还用了log4j2的日志

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.hbase</groupId>
    <artifactId>hbase-operation</artifactId>
    <version>0.0.1</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>2.0.2</version>
            <exclusions>
                <exclusion>
                    <artifactId>servlet-api</artifactId>
                    <groupId>javax.servlet</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>2.0.2</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.32</version>
        </dependency>

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.17.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.17.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.17.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>log4j-api</artifactId>
                    <groupId>org.apache.logging.log4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>log4j-core</artifactId>
                    <groupId>org.apache.logging.log4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.hbase.HbaseSearch</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

日志配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

实际代码

package com.hbase;

import lombok.extern.slf4j.Slf4j;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.util.List;

/**
 * @author panlf
 * @date 2023/11/1
 */
@Slf4j
public class HbaseSearch {
    public static void main(String[] args) throws Exception {
        log.info("start111");
        // 创建HBase配置对象
        Configuration config = HBaseConfiguration.create();
        config.set("hbase.zookeeper.quorum", "fdp-master,fdp-slave1,fdp-slave2,fdp-slave3"); // 设置ZooKeeper地址
  	config.set("hbase.rootdir","hdfs://fdp-master:8020/apps/hbase/data");
        config.set("zookeeper.znode.parent","/hbase-unsecure");
        // 创建HBase连接
        Connection connection = ConnectionFactory.createConnection(config);
        Admin admin = connection.getAdmin();

        // 获取所有表名
        List<TableDescriptor> tableDescriptors = admin.listTableDescriptors();
        for (TableDescriptor tableDescriptor : tableDescriptors) {
            System.out.println("表名: " + Bytes.toString(tableDescriptor.getTableName().getName()));
        }
        System.out.println("over");

        // 关闭资源
        admin.close();
        connection.close();
    }
}

到此这篇关于Java连接Hbase的项目实践的文章就介绍到这了,更多相关Java连接Hbase内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot 如何使用BindingResult校验参数

    Springboot 如何使用BindingResult校验参数

    这篇文章主要介绍了Springboot 如何使用BindingResult校验参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • java四种访问权限实例分析

    java四种访问权限实例分析

    这篇文章主要介绍了java四种访问权限实例分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 如何基于Jenkins构建Docker镜像

    如何基于Jenkins构建Docker镜像

    这篇文章主要介绍了基于Jenkins构建Docker镜像,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • spring中实现容器加载完成后再执行自己的方法

    spring中实现容器加载完成后再执行自己的方法

    这篇文章主要介绍了spring中实现容器加载完成后再执行自己的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 深入浅析TomCat Session管理分析

    深入浅析TomCat Session管理分析

    这篇文章主要介绍了深入浅析TomCat Session管理分析,需要的朋友可以参考下
    2015-11-11
  • Java深入解析接口interface

    Java深入解析接口interface

    接口是Java中最重要的概念之一,它可以被理解为一种特殊的类,不同的是接口的成员没有执行体,是由全局常量和公共的抽象方法所组成,本文给大家介绍Java接口,感兴趣的朋友一起看看吧
    2022-06-06
  • MyBatis使用嵌套查询collection和association的实现

    MyBatis使用嵌套查询collection和association的实现

    本文详细介绍了使用MyBatis框架进行数据库操作时,如何利用collection标签实现一对多的嵌套查询和使用association标签实现一对一的嵌套查询,感兴趣的可以了解一下
    2024-09-09
  • Java全排列算法字典序下的下一个排列讲解

    Java全排列算法字典序下的下一个排列讲解

    今天小编就为大家分享一篇关于Java全排列字典序下的下一个排列,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Netty分布式pipeline管道传播outBound事件源码解析

    Netty分布式pipeline管道传播outBound事件源码解析

    这篇文章主要介绍了Netty分布式pipeline管道传播outBound事件源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • 详解java一维数组及练习题实例

    详解java一维数组及练习题实例

    在本篇文章里小编给大家整理了关于java一维数组及练习题的相关知识点和实例代码,有需要的朋友们跟着学习下。
    2019-07-07

最新评论