Metamodel hadoop - ExcelDataContext 的 HdfsResource 问题
Metamodel hadoop - HdfsResource issue with ExcelDataContext
一点背景知识:
我的程序用于支持普通文件系统,使用 ExcelDataContext 读取 Excel 文件(并对数据执行一些操作)。所有动作都很好。
现在:
我的程序必须修改以支持 Hadoop Oozie 并与其一起工作。使用 Metamodel-hadoop 4.3.5 版本,我设法使用 HdfsResource 从 hadoop 读取 excel 文件。 ExcelDataContext 能够支持 Resource 并且可以像以前一样做同样的工作。
问题:
但是,我的 oozie 工作流程无法 end/complate 即使我的程序已经完成 运行。调试了几个小时,发现是使用HdfsResource初始化ExcelDataContext.
的问题
我是这样定义的 HdfsResource.
...
Resource hdfsResource = new HdfsResource(hdfsExcelFilePath);
ExcelDataContext dc = new ExcelDataContext(hdfsResource, excelConfiguration);
....
如果我注释掉 hdfsResource 行并使用本地文件系统,程序能够毫无问题地完成/结束进程。
我怀疑资源没有正确关闭/结束,但即使我将它设置为 NULL,我也无法关闭/结束它。无论如何要解决这个问题?没有关闭功能。
hdfsResource = null;
经过2天的调查研究,我发现我走错了方向。这不是资源没有正确关闭的问题,而是相反的方式。 "HdfsResource" 已正确关闭 HDFS,导致 Oozie 工作流因连接关闭而无法获取 HDFS。
解决方法:
我在 MetaModel-Hadoop 中克隆了一个相同的 HDFSResource 副本,它用 FileHelper.SafeClose(fs) 修改了所有函数以将其注释掉。我不确定这是否是正确的方法,但我的目的是让 HDFS 连接始终可用,直到 Oozie 完成其工作后自行结束连接。
一点背景知识:
我的程序用于支持普通文件系统,使用 ExcelDataContext 读取 Excel 文件(并对数据执行一些操作)。所有动作都很好。
现在:
我的程序必须修改以支持 Hadoop Oozie 并与其一起工作。使用 Metamodel-hadoop 4.3.5 版本,我设法使用 HdfsResource 从 hadoop 读取 excel 文件。 ExcelDataContext 能够支持 Resource 并且可以像以前一样做同样的工作。
问题:
但是,我的 oozie 工作流程无法 end/complate 即使我的程序已经完成 运行。调试了几个小时,发现是使用HdfsResource初始化ExcelDataContext.
我是这样定义的 HdfsResource.
...
Resource hdfsResource = new HdfsResource(hdfsExcelFilePath);
ExcelDataContext dc = new ExcelDataContext(hdfsResource, excelConfiguration);
....
如果我注释掉 hdfsResource 行并使用本地文件系统,程序能够毫无问题地完成/结束进程。
我怀疑资源没有正确关闭/结束,但即使我将它设置为 NULL,我也无法关闭/结束它。无论如何要解决这个问题?没有关闭功能。
hdfsResource = null;
经过2天的调查研究,我发现我走错了方向。这不是资源没有正确关闭的问题,而是相反的方式。 "HdfsResource" 已正确关闭 HDFS,导致 Oozie 工作流因连接关闭而无法获取 HDFS。
解决方法: 我在 MetaModel-Hadoop 中克隆了一个相同的 HDFSResource 副本,它用 FileHelper.SafeClose(fs) 修改了所有函数以将其注释掉。我不确定这是否是正确的方法,但我的目的是让 HDFS 连接始终可用,直到 Oozie 完成其工作后自行结束连接。