Я пытался прочитать данные, используя подстановочный знак из пути gcs. Мои файлы в формате bzip2, и в пути gcs содержится около 300 тыс. Файлов с одинаковым подстановочным выражением. Я использую приведенный ниже фрагмент кода для чтения файлов.
PCollection<String> val = p
.apply(FileIO.match()
.filepattern("gcsPath"))
.apply(FileIO.readMatches().withCompression(Compression.BZIP2))
.apply(MapElements.into(TypeDescriptor.of(String.class)).via((ReadableFile f) -> {
try {
return f.readFullyAsUTF8String();
} catch (IOException e) {
return null;
}
}));
Но производительность очень низкая, и чтение этого файла с использованием приведенного выше кода с текущей скоростью займет около 3 дней. Есть ли какой-либо альтернативный API, который я могу использовать в облачном потоке данных, чтобы прочитать это количество файлов из gcs с хорошей производительностью. Я использовал TextIO ранее, но это не удавалось из-за предела сериализации шаблона, который составляет 20 МБ.