Spring 批处理和 S3 集成 - 如何在开始读取之前首先从 S3 中删除空字符?
Spring Batch and S3 Integration - how to remove null characters first from S3 before start reading?
在我的例子中,我们从源系统获取 FlatFile 并将其保存在服务器上,然后由于某些自动化过程,我们将此文件推送到 Amazon S3 Bucket。
源系统是大型机,它以某种方式将空字符放入平面文件中,这对他们来说是不可避免的。现在,在我们开始读取 FlatFile 之前,我们必须需要从 Amazon S3 存储桶中的文件中删除空字符(就像我们使用 linux 命令 - tr \'\000\' \' \' < \"%s\" > \"%s\"
所做的那样)。
到目前为止,我还没有找到无需下载即可删除空字符的方法(并非无法找到方法),一旦删除了空字符,就可以开始阅读了。
注意 - 由于我们已经在 PCF 上部署了批处理应用程序,我们无法在 PCF 上下载并删除 NULL 字符并再次上传,因为 PCF 支持团队确认 PCF 中的文件系统是暂时的,因此与文件相关的任何操作都是那里不建议。
我不知道你是否可以在不下载文件的情况下在 s3 中内联更改文件。也就是说,拥有临时文件系统并不意味着不进行任何文件操作,而是意味着不依赖于该 FS 进行持久存储。任何临时文件操作都可以在该 FS 上完成,没有任何问题。
所以即使 PCF 上的文件系统是瞬态的,我也没有看到在开始面向块的处理之前下载文件并在 tasklet 步骤中转换它的任何缺点(显然只要你有足够的 space 存储文件)。 SystemCommandTasklet
适合您的 tr
命令。该文件可以在最后一步或在作业侦听器中清理。
在我的例子中,我们从源系统获取 FlatFile 并将其保存在服务器上,然后由于某些自动化过程,我们将此文件推送到 Amazon S3 Bucket。
源系统是大型机,它以某种方式将空字符放入平面文件中,这对他们来说是不可避免的。现在,在我们开始读取 FlatFile 之前,我们必须需要从 Amazon S3 存储桶中的文件中删除空字符(就像我们使用 linux 命令 - tr \'\000\' \' \' < \"%s\" > \"%s\"
所做的那样)。
到目前为止,我还没有找到无需下载即可删除空字符的方法(并非无法找到方法),一旦删除了空字符,就可以开始阅读了。
注意 - 由于我们已经在 PCF 上部署了批处理应用程序,我们无法在 PCF 上下载并删除 NULL 字符并再次上传,因为 PCF 支持团队确认 PCF 中的文件系统是暂时的,因此与文件相关的任何操作都是那里不建议。
我不知道你是否可以在不下载文件的情况下在 s3 中内联更改文件。也就是说,拥有临时文件系统并不意味着不进行任何文件操作,而是意味着不依赖于该 FS 进行持久存储。任何临时文件操作都可以在该 FS 上完成,没有任何问题。
所以即使 PCF 上的文件系统是瞬态的,我也没有看到在开始面向块的处理之前下载文件并在 tasklet 步骤中转换它的任何缺点(显然只要你有足够的 space 存储文件)。 SystemCommandTasklet
适合您的 tr
命令。该文件可以在最后一步或在作业侦听器中清理。