我已经在Amazon Personalize中使用“similar-items”配方创建了一个解决方案版本,并尝试使用批处理推理作业对其进行测试。我遵循AWS文档,其中规定输入应该是一个itemId列表,最多500个项目,每个itemId用一个新行分隔:
{"itemId": "105"}
{"itemId": "106"}
{"itemId": "441"}
...
因此,我编写了以下代码将item_ids列转换为所描述的JSON格式:
# convert item_id column to required JSON format with new lines entered between items
items_json = items_df['ITEM_ID'][1:200].to_json(orient='columns').replace(',','}\n{')
# write output to json file
with open('items_json.json', 'w') as f:
json.dump(items_json, f)
# write file to S3
from io import StringIO
import s3fs
#Connect to S3 default profile
s3 = boto3.client('s3')
s3.put_object(
Body=json.dumps(items_json),
Bucket='bucket',
Key='personalize/batch-recommendations-input/items_json.json'
)
然后,当我以它作为输入运行批处理推理作业时,它给出以下错误:“用户错误:输入JSON格式不正确。”
我的示例JSON输入如下所示:
"{"itemId":"12637"} {"itemId":"12931"} {"itemId":"13005"}"
在将其复制到S3之后,如下所示(添加反斜杠)-不知道这是否重要:
"{\"itemId\":\"12637\"}\n{\"itemId\":\"12931\"}\n{\"itemId\":\"13005\"}"
对我来说,我的格式看起来与他们要求的非常相似,有什么线索可能导致错误吗?
1条答案
按热度按时间mbyulnm01#
您只需要对to_json的使用做一些小的更改。具体来说,
orient
应该是records
,lines
应该是True
。完整示例:
最后,您提到输入项的最大数量是500。实际上,您的输入文件最多可以有50M input items or a file size of 1GB。