Это происходит потому, что filesInZip
не разделяется между работниками. foreach
работает с локальной копией filesInZip
, и когда она заканчивается, эта копия просто отбрасывается и собирается мусор. Если вы хотите сохранить результаты, вы должны использовать преобразование (скорее всего, flatMap
) и вернуть собранные агрегированные значения.
def listFiles(stream: PortableDataStream): TraversableOnce[String] = ???
zipInputStream.flatMap(listFiles)
Вы можете узнать больше из Понимание замыканий