Я использую ниже код для чтения большого файла XML (в ГЗ) в Hadoop RecordReader с использованием XMLStreamReaderКак getProgress больших файлов с помощью 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 так как он не предоставляет начальную или конечную позицию для расчета процента прогресса. Я ссылался на How do I keep track of parsing progress of large files in StAX?, но не могу использовать userReader. Пожалуйста, помогите мне здесь.
Вы знаете полную длину потока? – biziclop
нет, с stax это невозможно, так как он использует потоковое воспроизведение, поэтому не может получить весь размер файла. –
Я имею в виду, откуда-то еще. Потому что, если вам не удастся определить общую длину ваших данных ** до того, как вы начнете ее передавать, вам не удастся отслеживать прогресс. – biziclop