Flink集成Hive ClassNotFoundException: org.apache.hadoop.conf.Configuration

Apache Hive 是基于 Hadoop 之上构建的, 所以还需要 Hadoop 的依赖,配置好HADOOP_CLASSPATH即可。这一点非常重要,否则在使用FlinkSQL Cli查询Hive中的表时,会报如下错误:

Exception in thread "main" org.apache.flink.table.client.SqlClientException: Unexpected exception. This is a bug. Please consider filing an issue.
    at org.apache.flink.table.client.SqlClient.main(SqlClient.java:215)
Caused by: org.apache.flink.table.client.gateway.SqlExecutionException: Could not create execution context.
    at org.apache.flink.table.client.gateway.local.ExecutionContext$Builder.build(ExecutionContext.java:972)
    at org.apache.flink.table.client.gateway.local.LocalExecutor.openSession(LocalExecutor.java:225)
    at org.apache.flink.table.client.SqlClient.start(SqlClient.java:108)
    at org.apache.flink.table.client.SqlClient.main(SqlClient.java:201)
Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
    at org.apache.flink.table.catalog.hive.factories.HiveCatalogFactory.createCatalog(HiveCatalogFactory.java:89)
    at org.apache.flink.table.client.gateway.local.ExecutionContext.createCatalog(ExecutionContext.java:396)
    at org.apache.flink.table.client.gateway.local.ExecutionContext.lambda$null$5(ExecutionContext.java:684)
    at java.util.HashMap.forEach(HashMap.java:1288)
    at org.apache.flink.table.client.gateway.local.ExecutionContext.lambda$initializeCatalogs$6(ExecutionContext.java:681)
    at org.apache.flink.table.client.gateway.local.ExecutionContext.wrapClassLoader(ExecutionContext.java:265)
    at org.apache.flink.table.client.gateway.local.ExecutionContext.initializeCatalogs(ExecutionContext.java:677)
    at org.apache.flink.table.client.gateway.local.ExecutionContext.initializeTableEnvironment(ExecutionContext.java:565)
    at org.apache.flink.table.client.gateway.local.ExecutionContext.<init>(ExecutionContext.java:187)
    at org.apache.flink.table.client.gateway.local.ExecutionContext.<init>(ExecutionContext.java:138)
    at org.apache.flink.table.client.gateway.local.ExecutionContext$Builder.build(ExecutionContext.java:961)
    ... 3 more
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

解决办法一:

配置HADOOP_CLASSPATH,需要在/etc/profile文件中配置如下的环境变量:

export HADOOP_CLASSPATH=`hadoop classpath`

配置环境变量 一定要 source

如果上面不生效,解决办法二:

在flink/bin/start-cluster.sh中添加

export HADOOP_CLASSPATH=`hadoop classpath`

重新启动

ClassNotFoundException: org.apache.flink.runtime.state.CheckpointStorageException 是一个Java异常,表示无法找到指定的类或接口。在这种情况下,类 org.apache.flink.runtime.state.CheckpointStorageException 在程序的 classpath 中无法找到。 Flink 是一个用于分布式流处理和批处理的开源框架。在 Flink 中,CheckpointStorageException 是一个用于处理状态检查点存储问题的异常类。它是 Flink 的状态后端 (state backend) 在存储检查点期间可能发生的异常的基类之一。 当程序在启动或运行时抛出 ClassNotFoundException: org.apache.flink.runtime.state.CheckpointStorageException 异常时,表示 Flink 在查找或加载与检查点存储相关的类时遇到了问题。这可能是由以下原因引起的: 1. 缺少所需的 Flink 依赖项。解决方法是检查程序的 classpath,确保所有必需的 Flink 依赖项都已包含在其中。可以通过在构建工具 (如 Maven 或 Gradle) 的配置文件中添加正确的依赖项来解决此问题。 2. 版本不匹配。如果程序中使用的 Flink 版本与检查点存储实现版本不匹配,可能会导致 ClassNotFoundException。确保使用的 Flink 版本和检查点存储实现的版本兼容。 3. 检查点存储实现不可用。某些情况下,可能需要自定义检查点存储实现。如果没有正确配置或者实现有问题,可能会导致 ClassNotFoundException。确保正确配置检查点存储实现,并确保它可用并可访问。 总之,ClassNotFoundException: org.apache.flink.runtime.state.CheckpointStorageException 是一个表示无法找到 Flink 检查点存储相关类的异常。解决这个问题通常包括检查程序的依赖项和版本,以及确保正确配置和可访问的检查点存储实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值