Я использую приведенный ниже код для чтения большого XML-файла (в ГБ) в Hadoop RecordReader с использованием XMLStreamReader.
public class RecordReader {
int progressCouunt = 0;
public RecordReader() {
XMLInputFactory factory = XMLInputFactory.newInstance();
FSDataInputStream fdDataInputStream = fs.open(file); //hdfs file
try {
reader = factory.createXMLStreamReader(fdDataInputStream);
} catch (XMLStreamException exception) {
throw new RuntimeException("XMLStreamException exception : ", exception);
}
}
@Override
public float getProgress() throws IOException, InterruptedException {
return progressCouunt;
}
}
Мой вопрос заключается в том, как получить ход чтения файла с помощью XMLStreamReader, поскольку он не предоставляет никакой начальной или конечной позиции для расчета процента выполнения. Я сослался на Как сделать Я отслеживаю ход обработки больших файлов в StAX?, но не могу использовать filterReader. Пожалуйста, помогите мне здесь.