元模型hadoop-带ExcelDataContext的HdfsResource问题

元模型hadoop-带ExcelDataContext的HdfsResource问题,hadoop,resources,metamodel,Hadoop,Resources,Metamodel,一点背景: 我的程序用于支持普通文件系统,读取Excel文件,并使用ExcelDataContext对数据执行一些操作。这一切都很好 现在: 我的程序必须修改以支持Hadoop Oozie并与之协同工作。使用元模型hadoop 4.3.5版本,我使用HdfsResource从hadoop中读取excel文件。ExcelDataContext能够支持资源,可以像以前一样执行相同的工作 问题是: 但是,我的oozie作业工作流即使在我的程序完成运行后也无法结束/满足。经过几个小时的调试,我发现问题在

一点背景: 我的程序用于支持普通文件系统,读取Excel文件,并使用ExcelDataContext对数据执行一些操作。这一切都很好

现在: 我的程序必须修改以支持Hadoop Oozie并与之协同工作。使用元模型hadoop 4.3.5版本,我使用HdfsResource从hadoop中读取excel文件。ExcelDataContext能够支持资源,可以像以前一样执行相同的工作

问题是: 但是,我的oozie作业工作流即使在我的程序完成运行后也无法结束/满足。经过几个小时的调试,我发现问题在于使用HdfsResource初始化ExcelDataContext

下面是我如何定义HdfsResource的

。。。 Resource hdfsResource=新的HdfsResourcehdfsExcelFilePath; ExcelDataContext dc=新的ExcelDataContexthdfsResource,excelConfiguration;

如果我注释掉hdfsResource行并使用本地文件系统,程序就能够毫无问题地完成/结束该过程

我怀疑该资源未正确关闭/结束,但即使将其设置为NULL,我也无法关闭/结束它。有没有办法解决这个问题?没有关闭功能

hdfsResource=null


经过两天的调查研究,我发现我走错了方向。问题不在于哪个资源没有正确关闭,而是以相反的方式关闭。HdfsResource已正确关闭HDFS,这会导致Oozie工作流由于连接关闭而无法获取HDFS

解决方案: 我在MetaModel Hadoop中克隆了同一个HDFSResource副本,它使用FileHelper.SafeClosefs修改了所有函数以注释掉它。我不确定这是否是正确的方法,但我的意图是允许HDFS连接始终可用,直到Oozie在完成其工作后结束连接