1
私はの郵便番号のファイルをのApache Sparkに読み込んでいます。私はmy answer on StackOverflowを共有しました。Apache Sparkの最後のストリームを閉じるとjava.io.IOExceptionが発生する:ストリームが閉じられる
@Programmerは、開かれたストリームを閉じているわけではないことをよく知っていました。私は
Stream.continually(zis.getNextEntry)
.takeWhile {
case null => zis.close(); false
case _ => true
}
.flatMap { _ =>
val br = new BufferedReader(new InputStreamReader(zis))
Stream.continually(br.readLine())
.takeWhile{
case null => br.close(); false
case _ => true
}
}
takeWhile
における部分関数(inspiration)でそれを達成しようとしたが、それは動作しません!
Job aborted due to stage failure: Task 0 in stage 5.0 failed 1 times, most recent failure: Lost task 0.0 in stage 5.0 (TID 20, localhost): java.io.IOException: Stream closed
at java.util.zip.ZipInputStream.ensureOpen(ZipInputStream.java:67)
at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:116)
を単に開いて、それを残すことによって - それはOKに動作します:zipファイルを読んでいる間
、私は今、このエラーが発生します。
ストリームを閉じてもう一度読み込もうとしているようです。しかし、なぜそれを解決するのか分からない。
これは、 'br'ストリームを閉じるときに' zis'を全部閉じているからではありませんか? –