flink写入hbase报错org.apache.commons.io.IOUtils.closeQuietly(Ljava/io/Closeable;)V
时间: 2023-08-05 08:09:54 浏览: 113
kafka处理超大消息的配置 org.apache.kafka.common.errors.RecordTooLargeException
这个报错是因为您的 Flink 代码中使用了一个已经被废弃的方法 `IOUtils.closeQuietly()`,而该方法在 Flink 的依赖库中已被移除。最好的解决方法是将该方法替换为 `org.apache.flink.shaded.guava18.com.google.common.io.Closer` 中的 `close()` 方法,该方法可以安全地关闭任何实现了 `java.io.Closeable` 接口的对象。您可以按照以下步骤进行替换:
1. 从 Maven 仓库中下载 `guava-18.0.jar`。
2. 将 `guava-18.0.jar` 添加到 Flink 项目的 classpath 中。
3. 在您的代码中替换 `IOUtils.closeQuietly()` 方法为 `Closer.close()` 方法。
示例代码如下:
```java
import org.apache.flink.shaded.guava18.com.google.common.io.Closer;
import java.io.IOException;
public class Example {
public static void main(String[] args) throws IOException {
Closer closer = Closer.create();
try {
// your HBase write code here
} catch (Throwable t) {
throw closer.rethrow(t);
} finally {
closer.close();
}
}
}
```
这段代码创建了一个 `Closer` 对象,您需要将您的 HBase 写入代码包装在 `try` 代码块中,然后通过 `Closer.rethrow()` 将任何抛出的异常重新抛出,最后在 `finally` 代码块中调用 `Closer.close()` 方法关闭资源。
阅读全文