我注意到java apache束有類groupby.sortbytimestamp python是否實現了該功能?如果不是,將在窗口中排序元素的方式是什麼?我想我可以在DoFn中整理整個窗口,但我想知道是否有更好的方法。如何在python apache梁中的窗口中排序元素?
3
A
回答
6
Beam中目前沒有內置的值排序(無論是Python還是Java)。現在,最好的選擇是像你剛纔提到的那樣,在DoFn中自己排序值。
1
這是一個使用CombineFn的解決方案。它具有使用TreeSet重複數據刪除的額外好處。您還應該確保您的窗口數據足夠小,以適應單個工作人員的內存。
public static class DedupAndSortByTime extends Combine.CombineFn<MarketData, TreeSet<MarketData>, List<MarketData>> {
@Override
public TreeSet<MarketData> createAccumulator() {
return new TreeSet<>(Comparator
.comparingLong(MarketData::getEventTime)
.thenComparing(MarketData::getOrderbookType));
}
@Override
public TreeSet<MarketData> addInput(TreeSet<MarketData> accum, MarketData input) {
accum.add(input);
return accum;
}
@Override
public TreeSet<MarketData> mergeAccumulators(Iterable<TreeSet<MarketData>> accums) {
TreeSet<MarketData> merged = createAccumulator();
for (TreeSet<MarketData> accum : accums) {
merged.addAll(accum);
}
return merged;
}
@Override
public List<MarketData> extractOutput(TreeSet<MarketData> accum) {
return Lists.newArrayList(accum.iterator());
}
}
相關問題
- 1. Apache Beam中基於元組的窗口
- 2. Wpf ModernUI窗口元素排列
- 3. python如何從列表中刪除元素的排序列表?
- 4. 如何在瀏覽器窗口中居中HTML元素?
- 5. 如何對父元素中的XML元素進行排序?
- 6. 使用元素在新窗口中
- 7. jQuery在父窗口中選擇元素
- 8. 在gstreamer元素中打開OpenCV窗口
- 9. 在Winium.Cruciatus中查找主窗口元素
- 10. jquery - 在窗口中找不到元素
- 11. 找到列表中的元素,而無需在Python中排序
- 12. 如何在窗口中找到wpf元素的位置
- 13. 使用Apache梁
- 14. Python Selenium元素在彈出窗口中不可見
- 15. 如何在視口中居中元素?
- 16. XSLT:如何排序元素?
- 17. 如何在java中對arraylist中的元素進行排序?
- 18. 彈出窗口中的固定元素
- 19. WPF中窗口元素的TabNavigation
- 20. 排序在Java中的HashSet的元素
- 21. 查找iframe中元素的窗口
- 22. 處理與BigQuery空PCollections在Apache中梁
- 23. QT中窗口的排列順序
- 24. 如何從父窗口動態創建子窗口中的元素
- 25. 左加入apache梁
- 26. 如何將元素值從父窗口發送到子圖層窗口元素?
- 27. 如何在Python中「刷新」Tkinter窗口?
- 28. 如何在彈出窗口中動態創建HTML元素?
- 29. 如何在窗口大小調整時保持元素居中
- 30. 如何在新窗口中獲取dom元素?
你在哪裏找到這門課嗎?我認爲它不再存在:https://github.com/apache/beam/search?utf8=%E2%9C%93&q=sortbytimestamp&type= – skeller88