Как переопределить метаданные по умолчанию.lastModifiedMillis () FileIO луча Apache с фактическим временем последнего изменения файла?

Вариант использования: мне нужно фильтровать файлы на основе lastModifiedTime с использованием луча Apache (Java)

Мой код:

PCollection<String> readfile = pipeline
                .apply(FileIO.match().filepattern(path)
                        .continuously(Duration.standardSeconds(30), Watch.Growth.never()))
                .setCoder(MetadataCoderV2.of())
                .apply(Filter.by(metadata -> {
                    System.out.println("metadata: " + metadata.toString());
                    return (metadata.lastModifiedMillis()) > current;}))
                .apply(FileIO.readMatches())
                .apply(TextIO.readFiles()); 

Проблема: несмотря на то, что я использую кодер MetadataCoderV2, получаю значение по умолчанию (0) для metadata.lastModifiedMillis(), как показано ниже.

Metadata{resourceId="fileName", sizeBytes=108, isReadSeekEfficient=true, lastModifiedMillis=0}

может кто подскажет как решить эту проблему.


person Durga    schedule 28.03.2021    source источник
comment
Если это не сработает, как насчет того, чтобы получить список имен файлов и написать MapElements.via (beam.apache.org/documentation/transforms/java/elementwise/) через собственный API Java: stackoverflow.com/questions/4363197/   -  person 大ドア東    schedule 06.04.2021