как я могу сохранить данные rdd в локальный файл вместо println - PullRequest
0 голосов
/ 08 июня 2018

Я хотел бы напечатать rdd-данные, используя scala, например:

res1.foreach{case(userid,tags)=>println(s"${userid}${"\t"}${tags.topicInterests.map(_.id).mkString(",")}")}

А теперь я хочу сохранить детали в локальный файл вместо println, как я могу это реализовать?

1 Ответ

0 голосов
/ 08 июня 2018

Используйте saveAsTextFile() метод RDD, как показано ниже:

val strRdd = res1.map{case(userid,tags)=>(s"${userid}${"\t"}${tags.topicInterests.map(_.id).mkString(",")}")}
strRdd.saveAsTextFile("/home/test_user/result")

Обратите внимание, что метод saveAsTextFile принимает путь (абсолютный или относительный) к папке / каталогу , а нефайл .Данные СДР будут записаны в виде файлов деталей внутри данного каталога.В этом случае будет создан каталог с именем result, в котором будут находиться файлы деталей.

В файле strRdd будет столько файлов деталей, сколько и разделов.Если путь /home/test_user/result уже существует, ваш код потерпит неудачу.Таким образом, вам придется использовать только несуществующий каталог.

Дополнительная информация: тот же метод saveAsTextFile также работает в других файловых системах, таких как HDFS, S3 и т. Д., Передавая URL-адрес целевым каталогам, а не простопути.

...