Я использую Spotify Scio для чтения журналов, которые экспортируются из Stackdriver в Google Cloud Storage. Это файлы JSON, в которых каждая строка является отдельной записью. Глядя на рабочие журналы, кажется, что файл разбит на куски, которые затем читаются в любом порядке. В этом случае я уже ограничил свою работу ровно 1 работником. Есть ли способ заставить эти куски читать и обрабатывать по порядку?Прочитать файл в заказе в Google Cloud Dataflow
В качестве примера (Textfile в основном TextIO.Read):
val sc = ScioContext(myOptions)
sc.textFile(myFile).map(line => logger.info(line))
производят ли вывод, подобный этому на основе рабочих журналов:
line 5
line 6
line 7
line 8
<Some other work>
line 1
line 2
line 3
line 4
<Some other work>
line 9
line 10
line 11
line 12
То, что я хочу знать, если есть способ заставить его читать строки 1-12 по порядку. Я обнаружил, что gzipping файл и чтение его с указанным параметром CompressionType - это обходной путь, но мне интересно, есть ли способы сделать это, которые не включают в себя zipping или изменение исходного файла.
У меня была аналогичная проблема/вопрос в последнее время, и обратная связь была в основном «Нет». Кажется, что даже когда вы запускаете локально, Dataflow по-прежнему читает в случайном порядке. Одним из обходных решений, которые я выполнил для этого, что не очень удобно, является чтение файла по порядку в Pub/Sub и отправка сообщений в Dataflow, при этом Dataflow подписывается на тему PubSub вместо чтения файла. Когда DataFlow заканчивается с каждым сообщением, он отправляет сообщение обратно, говоря, что это сделано, поэтому PubSub отправляет следующий. Это немного за борт, так что было бы здорово услышать лучшие/встроенные параметры ... –
Это неудачно, я думал о том, чтобы делать подобные вещи, но я могу просто предварительно застегнуть все, поскольку он по крайней мере кажется надежным. Если я правильно понимаю, расщепление не произойдет, когда они застегнуты на молнию, и логика продолжит порядок. Я согласен, что должен быть более простой способ, спасибо! –
Не могли бы вы рассказать о своем случае? Dataflow предназначен для параллельной обработки данных, и похоже, что вы ищете серийный инструмент. –