You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon Personalize批量推理作业输入JSON格式错误排查求助

Amazon Personalize批量推理输入格式错误原因及修复方案

错误原因分析

你的代码存在两个关键问题,导致输入格式不符合要求:

  1. 初始格式生成错误:使用to_json(orient='columns')生成的是类似{"ITEM_ID":["12637","12931"]}的结构,后续替换逗号的操作会破坏JSON结构,生成非法的片段。
  2. 重复JSON序列化:你先后用json.dump(items_json, f)和json.dumps(items_json)对处理后的字符串再次进行JSON序列化,导致所有特殊字符被转义——比如实际换行变成了\n,双引号变成了\",最终上传到S3的内容是一个被包裹的字符串,而非每行一个独立的JSON对象,这完全不符合批量推理要求的JSON Lines格式。

修正后的代码

# 生成符合要求的JSON Lines格式:每行一个独立的itemId JSON对象
items_json_lines = '\n'.join([f'{{"itemId": "{item}"}}' for item in items_df['ITEM_ID'][1:200]])

# 写入本地文件(可选操作)
with open('items_json.json', 'w') as f:
    f.write(items_json_lines)

# 上传至S3
import boto3

s3 = boto3.client('s3')
s3.put_object(
    Body=items_json_lines,
    Bucket='bucket',
    Key='personalize/batch-recommendations-input/items_json.json'
)

修正说明

  • 直接遍历ITEM_ID列的每个值,逐个生成{"itemId": "xxx"}格式的字符串,再用换行符连接,得到标准的JSON Lines格式。
  • 不再对整个内容进行JSON序列化,直接写入原始字符串,避免转义问题。
  • 上传后S3中的文件内容会是:
{"itemId": "12637"}
{"itemId": "12931"}
{"itemId": "13005"}

完全符合Amazon Personalize批量推理作业的输入要求。

内容的提问来源于stack exchange,提问作者MSS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:57:48