【发布时间】:2019-11-03 13:02:39
【问题描述】:
我正在接收 API 调用的结果,进行一些转换并将其存储在 S3 中,现在它为每个 api 调用存储 1 个文件。导致文件很多,流程是:
invokeHTTP->Split.json->JoltTransformJSON(我不需要所有数据)->EvaluateJsonPath->InferAvroScheme(500 个样本)->ConvertJSONToAvro->PutS3Object
json格式为:
"data": {"value1": "test", "value2": "test2"},
"actions": [{"buy": 5, "sell": 6},{"buyAgain": 5, "sellAgain": 6}],
"Reactions": [{"buy": 5, "sell": 6}],
{"otherValue": "1",
"otherValue2": "2"}
有时动作内部有值,在其他情况下“动作”:[] 我使用 JoltTransformJSON 和 remove 参数删除反应,它有很多我不需要的数据
为了加入值,我尝试了 MergeContent,但它丢弃了很多记录,首先我阅读了可能的配置,然后......我开始修改参数只是为了看看它如何改变输出,它总是 DROP 很多记录.
所以现在我在 S3 中每个 json 存储 1 个文件,这是很多文件,您可以在查询数据时感受到它。
如何改进流程以存储更少的文件? 谢谢!
---- 编辑:添加图片----
当前 MergeContents 配置,不太了解 Attribute strategy 属性。这可以修复架构中的更改吗? (具有价值的行动或“行动”:[])
---- 编辑 2 ---- 现在我可以确认这是按预期按状态分组,但删除具有“动作”的 JSON 流:[],它们具有与该字段已满的某些流相同的状态,有什么想法吗?谢谢!
【问题讨论】:
标签: amazon-s3 apache-nifi