gpt4 book ai didi

java - 将 Amazon DynamoDB ItemCollection 拆分为小块的最快方法

转载 作者:行者123 更新时间:2023-12-02 09:02:42 25 4
gpt4 key购买 nike

我需要构建一个 lambda 函数,从 DynamoDB 中提取数千个项目,并在 Api Gateway 超时(29 秒)之前处理它们。我认为最好的方法是将集合分成更小的 block 并将它们分布在多个线程中以并行处理。

问题是,按照我当前尝试的方式执行此操作仅需要大约 25 秒即可拆分集合。有没有更好的方法来解决这个问题以便更快地处理?

代码:

public static List<List<Item>> partitionList(ItemCollection<QueryOutcome> items) {
final int partitionSize = 20;
List<List<Item>> partitioned = new LinkedList<List<Item>>();
List<Item> itemList = new ArrayList<Item>();
for(Item item : items) {
itemList.add(item);
}

for (int i = 0; i < itemList.size(); i += partitionSize) {
partitioned.add(itemList.subList(i, Math.min(i + partitionSize, itemList.size())));
}
return partitioned;
}

最佳答案

我的 Java 有点生疏,所以请耐心等待我的细节,但看起来您在这里做了相当多的额外工作。

public static List<List<Item>> partitionList(ItemCollection<QueryOutcome> items) {
final int partitionSize = 20;
List<List<Item>> partitioned = new LinkedList<List<Item>>();
List<Item> itemList = new ArrayList<Item>();
for(Item item : items) {
itemList.add(item);
if (itemList.size() == partitionSize) {
partitioned.add(itemList);
itemList = new ArrayList<Item>();
}
}

if (itemList.size() != 0) {
partitioned.add(itemList);
}

return partitioned;
}

我很好奇您如何在此处填充初始列表,因为这可能是完成这项工作的真正位置。

此外,您可能应该考虑针对此类工作更加异步的方法。

关于java - 将 Amazon DynamoDB ItemCollection 拆分为小块的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60047223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com