Триггерные окна в порядке в Apache Beam - PullRequest
0 голосов
/ 09 декабря 2018

Используя Apache Beam, я пытаюсь опубликовать метрики в StackDriver из Dataflow.Однако StackDriver не позволяет записать значение для t0 , если значение для t1 уже записано, и, к сожалению, в Apache Beam я пока не нашел способа применитьтот факт, что я хочу, чтобы окна выводились во временном порядке (насколько я понял, панель EARLY для t1 все еще может идти перед ON_TIME для t0 .

Поэтому я решил тогда запретить любое опоздание в окнах с 1-минутным исправлением:дословно от: https://cloud.google.com/monitoring/custom-metrics/creating-metrics

Когда конвейер находится в устойчивом состоянии, это работает как ожидалось.Однако, если по какой-то причине конвейер отключается на несколько минут и перезапускается, водяной знак растет очень быстро, в то время как происходит перехват необработанных данных, и несколько окон испускаются более или менее одновременно, в непредсказуемойпорядок, который вызывает следующую ошибку:

com.google.api.gax.rpc.InvalidArgumentException: io.grpc.StatusRuntimeException: INVALID_ARGUMENT: One or more TimeSeries could not be written: Points must be written in order. One or more of the points specified had an older end time than the most recent point.: timeSeries[0]

Интересно, если я что-то упустил, или я действительно вынужден как-то буферизовать сэмплы и отсортировать их перед записью в StackDriver.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Ошибка «INVALID_ARGUMENT: не удалось записать один или несколько временных рядов», наиболее часто возникает, когда несколько одновременно работающих авторов добавляют точки к одному временному ряду, где действительно должны быть отдельные TimeSeries для разных авторов, различающихсяпо отслеживаемому ресурсу или метке . Здесь это говорит о том, что «временной интервал точки должен быть позже любой точки, уже существующей во временном ряду».

0 голосов
/ 10 декабря 2018

Вы правы, что ранние выходные данные для окна, оканчивающегося в момент времени t1 , могут быть выведены до любого выхода для окна, оканчивающегося в более позднее время t2 .Также примечательно, что у PCollections нет присущего порядка, и транспортировка не обязана сохранять порядок.

Вы также правы, что если вы хотите отправлять данные о событиях с метками времени в систему, которая требует, чтобы они были в порядке,ожидание, пока водяной знак времени события гарантирует, что более поздних данных не будет, является единственным вариантом.

Если вы предоставите более подробную информацию о том, как именно вы используете StackDriver, у меня может быть больше информации о том, как его использовать чаще всего.эффективно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...