2016-12-02 11 views
0

Вот код, который я использую, чтобы написать dataframe в JSON. Я бег этого кода из дирижабля:Невозможно записать световой информационный фрейм в файл json

val df = Seq((2012, 8, "Batman", 9.8), (2012, 8, "Hero", 8.7), (2012, 7, "Robot", 5.5), (2011, 7, "Git", 2.0)).toDF("year", "month", "title", "rating") 
df.write.json("/tmp/out.json") 

Что я ожидаю dataframe данных, записанных в /tmp/out.json файла. Однако это создает каталог с именем «/tmp/out.json» и внутри, что я нахожу следующие два файла:

_SUCCESS 
._SUCCESS.crc 

Ни один из этих файлов не имеющих данных в формате JSON. Что мне здесь не хватает?

+1

Are вы запускаете кластер или только локально? Если в кластере вы проверили выходной каталог своих исполнителей, а не на машине драйвера? – ImDarrenG

+0

@ImDarrenG Я могу видеть json данные об исполнителе. И он разделен на исполнителей. Есть ли способ получить все данные json в одном файле json? –

+0

Да, это возможно, см .: http://stackoverflow.com/a/40594798/7098262 – Mariusz

ответ

0

У вас есть несколько вариантов:

  • Запись в общую папку и объединить файлы (не используя искру для выполнения слияния)
  • df.rdd.collect() данные для водителя и записи в файл. Вы будете использовать стандартные библиотеки scala io, чтобы не было разбиения на разделы. Это имеет недостаток в том, что нужно вытащить все данные от исполнителей к драйверу, что может быть медленным или неосуществимым в зависимости от объема данных и ресурсов драйвера.
  • Лучше подход, чем собирать весь набор данных будет собирать каждый раздел в свою очередь, и поток данных в один файл на водителе

например:

val rdd = df.rdd 
for (p <- rdd.partitions) { 
    val idx = p.index 
    val partRdd = rdd.mapPartitionsWithIndex(a => if (a._1 == idx) a._2 else Iterator(), true) 
    //The second argument is true to avoid rdd reshuffling 
    val data = partRdd.collect //data contains all values from a single partition 
           //in the form of array 
    //Now you can do with the data whatever you want: iterate, save to a file, etc. 
} 

https://stackoverflow.com/a/21801828/4697497

 Смежные вопросы

  • Нет связанных вопросов^_^