java - 如何解决 aws lambda 中的 java.lang.RuntimeException: java.lang.ClassNotFoundException: org.apache.hadoop.fs.LocalFileSystem?
问题描述
设置hadoop 配置java.lang.RuntimeException: java.lang.ClassNotFoundException: org.apache.hadoop.fs.LocalFileSystem
后,即使org.apache.hadoop.fs.LocalFileSystem
jar 文件中存在我也得到了。
解决方案
classloader
解决方案是从getClassByName
功能中“删除” 。例如org.apache.hadoop.conf.Configuration
,使用getClass
覆盖的方法创建,例如:
Configuration hadoopConfig = new Configuration() {
public Class<?> getClassByName(String name) throws ClassNotFoundException {
return Class.forName(name);
}
};
笔记
- 这只是工作实施。原始实现使用
Class.forName(name, true, classLoader);
因此新的覆盖代码可能无法工作,如果添加if
语句以更改逻辑org.apache.hadoop.fs.LocalFileSystem
- 该错误仅针对 AWS lambda 发生并修复。在其他环境(如真正的 Hadoop 集群)中,这可能不是一个合适的解决方案
推荐阅读
- awk - awk 不能同时使用 FIELDWIDTHS 和 OFS
- c - 在c中执行字符串的内容
- azure - 在 Azure devops 中使用“Workspace Clean”时的问题
- cordova - 如何在 Oculus Quest 上调试我的 Cordova 应用程序?
- c# - 如何删除特定字符,From...To the End of string in c#
- c# - 他们是减少数字的一种方法吗?10/7/20 - 3/5/21 *更新*
- asp.net - asp.net VB 如何选择一个列表框上的所有匹配值到另一个?
- python - 可视化 VGG16 的特征图
- java - 为什么我会收到“服务未注册”异常,即使我没有在 Android - Java/Kotlin 中使用任何服务?
- python - 尝试通过遍历 Panda 数据框使用 pyodbc 更新或插入 SQL Server