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

例如,
输入文件,
chunk1: sentence1....sentence1... sentence1....
chunk2: sentence2....sentence2... sentence2....输入文件被分成多个块。这些块中的每一个都通过SQS单独发送到一个批处理作业。批处理作业将调用外部API进行情感分析。每个文件将作为单独的文件上传到S3存储桶中。输出文件:
{"Chunk1": "sentence1....sentence1...sentence1....",
"Sentiment": "positive."}我只想将输出放在一个文件中,但是找不到合并输出文件的逻辑。
我尝试过的逻辑:
对于每个输入文件,我将一个UUID作为ametadata发送给每个块,并将它们与另一个lambda函数合并。但这里的问题是,我不确定何时处理完所有块,以及何时调用lambda函数来合并文件。
如果你有更好的合并文件的逻辑,请在这里分享。
发布于 2021-07-31 00:13:16
这听起来像是the AWS Step Function service的一个完美用例。步骤函数允许您拥有有序的任务(可以由Lambdas实现)。其中一种状态类型称为Map,它允许您并行启动许多任务,并在继续下一步之前等待所有这些任务完成。
因此,一个快速的高级状态流应该是这样的:
这可能需要一些谷歌搜索和阅读用户指南,但您的工作流程正是为此服务设计的用例,听起来您已经将其中一些步骤实现为自己的Lambda函数,您只需调整这些步骤,使其与Step函数接收和推送数据的方式兼容,而不是使用SQS。
话虽如此,我不确定如何合并文件,因为每个部分都是单独分析的,可能有自己的情绪,我不确定如何将情绪总结为一个整体。
资源:
https://stackoverflow.com/questions/68597875
复制相似问题