У нас возникла проблема в создании asList()
метода сортировки.Как создать сортировку вида asList() в SDK Google Dataflow?
Мы думали, что можем сделать это, просто расширив класс View и переопределив метод asList, но поняли, что класс View имеет частный конструктор, поэтому мы не могли этого сделать.
другой Наша попытка была раскошелиться код Google DataFlow на GitHub и изменить PCollectionViews
класс вернуть отсортированный список будет с помощью метода Collections.sort, как показано на фрагменте кода ниже
@Override
protected List<T> fromElements(Iterable<WindowedValue<T>> contents) {
Iterable<T> itr = Iterables.transform(
contents,
new Function<WindowedValue<T>, T>() {
@SuppressWarnings("unchecked")
@Override
public T apply(WindowedValue<T> input){
return input.getValue();
}
});
LOG.info("#### About to start sorting the list !");
List<T> tempList = new ArrayList<T>();
for (T element : itr) {
tempList.add(element);
};
Collections.sort((List<? extends Comparable>) tempList);
LOG.info("##### List should now be sorted !");
return ImmutableList.copyOf(tempList);
}
Обратите внимание, что мы теперь сортируют список.
Это казалось сработавшим при запуске с DirectPipelineRunner, но когда мы попробовали BlockingDataflowPipelineRunner, похоже, что смена кода выполнялась.
Примечание: Мы фактически перекомпилировали поток данных, используемый в нашем проекте, но это не сработало.
Как мы можем достичь этого (как отсортированный список из вызова метода asList
)?
Здравствуйте! Я пропустил ваш параллельный ответ. Я обновил свой ответ, чтобы решить ваши проблемы. Если у вас есть дополнительные вопросы, вы можете добавить их в качестве комментария к моему ответу, чтобы быть уверенным, что я получаю уведомление. –