将数据批处理到Azure表存储时,我遇到了一个奇怪的错误。
我有一个包含+350.000字符串的数组。我将每个字符串保存在一行中。它工作正常,直到第一个+50.000记录,然后Azure表存储开始抛出“无效输入类型”和“状态代码400”的异常。
当我批处理时,我一次批量处理10个项目,只需要一个简单的重试策略。
_TableContext.RetryPolicy = RetryPolicies.Retry(4, new TimeSpan(0, 0, 30));
_TableContext.SaveChanges(System.Data.Services.Client.SaveChangesOptions.Batch);
没有异步,没有平行主义。它在开发环境中运行良好。
哎呀...
答案 0 :(得分:3)
Azure表存储中的物理限制为每行1MB,每字符串字段限制为64 Kb(千字节)。
此外,如果您将字符串存储为partitionkeys或rowkeys,则不允许使用某些字符。
答案 1 :(得分:1)
错误是我自己的错误。我尝试使用相同的行和partionkey保存批次。当我改变它时,它完美地运作。
Azure FTW! :)