Я пишу программу spark/scala для чтения в ZIP-файлах, разархивировать их и записать содержимое в набор новых файлов. Я могу заставить это работать для записи в локальную файловую систему, но задавался вопросом, есть ли способ записать выходные файлы в распределенную файловую систему, такую как HDFS. Код показан below`Запись на HDFS в Spark/Scala
import java.util.zip.ZipInputStream
import org.apache.spark.input.PortableDataStream
import java.io._
var i =1
sc.binaryFiles("file:///d/tmp/zips/").flatMap((file: (String, PortableDataStream)) =>
{
val zipStream = new ZipInputStream(file._2.open)
val entry = zipStream.getNextEntry
val iter = scala.io.Source.fromInputStream(zipStream).getLines
val fname = f"/d/tmp/myfile$i.txt"
i = i + 1
val xx = iter.mkString
val writer = new PrintWriter(new File(fname))
writer.write(xx)
writer.close()
iter
}).collect()
`
В этом коде он не является RDD, поэтому не может его записать. Возможно, сначала конверсия. – dumitru
Да, я думаю, что актеры будут хороши здесь. RDD должен быть типом данных, чтобы манипулировать искровым светом, чтобы получить распределенные данные по кластеру. – chateaur
Это суть проблемы. Я пробовал все, что мог придумать, чтобы получить данные в моем ядре в RDD, чтобы включить использование saveasTextFile, но придумал короткий. Если кто-то решил это, пожалуйста, дайте мне знать – user2699504