Как насчет:
if (stream.markSupported() == false) {
// lets replace the stream object
ByteArrayOutputStream baos = new ByteArrayOutputStream();
IOUtils.copy(stream, baos);
stream.close();
stream = new ByteArrayInputStream(baos.toByteArray());
// now the stream should support 'mark' and 'reset'
}
Нет, короткий ответ, что это невозможно.
Этот https://databricks.com/blog/2017/08/31/cost-based-optimizer-in-apache-spark-2-2.html предоставляет превосходный обзор того, что возможно и дело в постоянных хранилищах данных.