Исключение файла avro с нулевым байтом

В настоящее время я использую avro 1.8.2 для записи событий журнала. Я наблюдаю некоторые очень редкие случаи, когда мой DataFileWriter фактически записывает файл размером 0 байт. Насколько я понимаю, действующий файл avro всегда должен иметь заголовок. Фрагмент кода выглядит так:

String id = uuidGenerate();
String tmpPath = prefix + id + ".tmp"
String publishedPath = prefix + id + ".log" 
DatumWriter<MySchema> datumWriter = new SpecificDatumWriter<>();
DataFileWriter<MySchema> dataFileWriter = new DataFileWriter<>(datumWriter);
create(schema, file) 
for (MySchema record : data) {
    writer.write(record);
}
writer.close();
Files.move(tmpPath, publishedPath, StandardCopyOption.ATOMIC_MOVE);

То, что я наблюдаю, - это 0-байтовый файл .log, предполагая, что перемещение является атомарным, я думаю, что каким-то образом я пишу поврежденные 0-байтовые файлы avro .tmp, которые сохраняются на диске как 0-байтовые файлы .log. При чтении 0-байтового файла я получаю следующее исключение:

java.io.IOException: Not a data file. 62512: at org.apache.avro.file.DataFileStream.initialize(DataFileStream.java:102) 62513: at org.apache.avro.file.DataFileStream.(DataFileStream.java:84)

Встречался ли кто-нибудь раньше с такими 0-байтовыми поврежденными avro-файлами. В чем была причина, так как я прохожу код, я не совсем понимаю, как это вообще возможно, поскольку при попытке воспроизвести локально я всегда получаю несколько байтов с заголовком. Мне действительно нужно fsync мои файлы avro после их закрытия и атомарного перемещения. Перемещается ли перемещаемый файл перед синхронизацией с диском каких-либо метаданных или заголовков. (моя среда - это экземпляр вычислений Google на GCP) Любые идеи по отладке действительно помогут.

Вы пытаетесь записать файл в облачное хранилище?

Dan Cornilescu 12.04.2018 07:56

нет на локальный диск GCE, я наблюдаю 0-байтовые файлы на локальных дисках для GCE

user179156 12.04.2018 19:18
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
2
258
0

Другие вопросы по теме