Как подсчитать общее количество строк в файле с помощью потока данных Google
Я хотел бы знать, если есть способ узнать общее количество строк в файле, используя поток данных Google. Любой пример кода и указатель будет отличным помощником. В принципе, у меня есть метод как
int getCount(String fileName) {}
Таким образом, приведенный выше метод вернет общее количество строк и его реализация будет представлять собой код потока данных.
Спасибо
1 ответ
Похоже, ваш вариант использования не требует распределенной обработки, поскольку файл сжат и, следовательно, не может быть прочитан параллельно. Тем не менее, вы все равно можете использовать API-интерфейсы Dataflow для удобства доступа к GCS и автоматической декомпрессии.
Поскольку вы также хотите получить результат из своего конвейера в качестве фактического объекта Java, вам необходимо использовать прямой запуск, который выполняется внутри процесса, не обращаясь к службе потока данных или не выполняя какую-либо распределенную обработку, однако в свою очередь он предоставляет способность извлекать PCollection
в объекты Java:
Что-то вроде этого:
PipelineOptions options = ...;
DirectPipelineRunner runner = DirectPipelineRunner.fromOptions(options);
Pipeline p = Pipeline.create(options);
PCollection<Long> countPC =
p.apply(TextIO.Read.from("gs://..."))
.apply(Count.<String>globally());
DirectPipelineRunner.EvaluationResults results = runner.run(p);
long count = results.getPCollection(countPC).get(0);