首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在aws中拆分和合并批处理作业中的json文件

在aws中拆分和合并批处理作业中的json文件
EN

Stack Overflow用户
提问于 2021-07-30 23:06:52
回答 1查看 28关注 0票数 1

我正在做一个项目,在这个项目中,我将一个带有一堆句子的文件拆分成块,以便进一步发送到第三方API进行情绪分析。

第三方API有一个最多5000个字符的限制,这就是为什么我要将文件分成每个40个句子的块。每个数据块将通过AWS SQS发送到批处理作业,并通过第三方API进行情感分析。我想将所有处理过的文件合并到一个文件中。我找不到合并文件的逻辑。

例如,

输入文件,

代码语言:javascript
复制
chunk1: sentence1....sentence1... sentence1....

chunk2: sentence2....sentence2... sentence2....

输入文件被分成多个块。这些块中的每一个都通过SQS单独发送到一个批处理作业。批处理作业将调用外部API进行情感分析。每个文件将作为单独的文件上传到S3存储桶中。输出文件:

代码语言:javascript
复制
{"Chunk1": "sentence1....sentence1...sentence1....",
"Sentiment": "positive."}

我只想将输出放在一个文件中,但是找不到合并输出文件的逻辑。

我尝试过的逻辑:

对于每个输入文件,我将一个UUID作为ametadata发送给每个块,并将它们与另一个lambda函数合并。但这里的问题是,我不确定何时处理完所有块,以及何时调用lambda函数来合并文件。

如果你有更好的合并文件的逻辑,请在这里分享。

EN

回答 1

Stack Overflow用户

发布于 2021-07-31 00:13:16

这听起来像是the AWS Step Function service的一个完美用例。步骤函数允许您拥有有序的任务(可以由Lambdas实现)。其中一种状态类型称为Map,它允许您并行启动许多任务,并在继续下一步之前等待所有这些任务完成。

因此,一个快速的高级状态流应该是这样的:

  1. 第一个状态将文件作为输入,并将文件分解为多个块
  2. ,第二个状态将是一个映射状态,其任务将一个文件作为输入,并发送到情感分析并保存输出。映射状态将为每个小文件启动一个任务,并检索情绪分析。
  3. 第三个也是最后一个任务状态将获取所有文件,并以您认为合适的方式组合它们。

这可能需要一些谷歌搜索和阅读用户指南,但您的工作流程正是为此服务设计的用例,听起来您已经将其中一些步骤实现为自己的Lambda函数,您只需调整这些步骤,使其与Step函数接收和推送数据的方式兼容,而不是使用SQS。

话虽如此,我不确定如何合并文件,因为每个部分都是单独分析的,可能有自己的情绪,我不确定如何将情绪总结为一个整体。

资源:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68597875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档