Используя 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.