Как подсчитать общее количество строк в файле с помощью потока данных 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);
Другие вопросы по тегам