Как сохранить сложные json или сложные объекты как паркет в Spark?

Я новичок в Spark, и я пытаюсь выяснить, есть ли способ сохранить сложные объекты (вложенные) или сложные jsons как Parquet в Spark. Мне известно о Kite SDK, но я понимаю, что он использует Map/Reduce.

Я огляделся, но не смог найти решение.

Спасибо за вашу помощь.


person IceMan    schedule 13.04.2017    source источник
comment
да, можно сохранить вложенный объект как паркет со искрой, у вас есть пример данных и ожидаемый результат   -  person Mehrez    schedule 13.04.2017
comment
@Mehrez Я не уверен, что ты имеешь в виду под ожидаемым результатом? Результатом будет файл Parquet, который понимает вложенные структуры, поддерживаемые спецификацией паркета (уровни определения и повторения).   -  person IceMan    schedule 13.04.2017
comment
ваша проблема не чиста, у вас есть исключение в вашем коде или вы ищете пример кода, чтобы сохранить вложенный объект как паркет?   -  person Mehrez    schedule 14.04.2017


Ответы (1)


case class Address(city:String, block:String);
case class Person(name:String,age:String, address:Address);
val people = sc.parallelize(List(Person("a", "b", Address("a", "b")), Person("c", "d", Address("c", "d"))));

val df  = sqlContext.createDataFrame(people);
df.write.mode("overwrite").parquet("/tmp/people.parquet")

Этот ответ на SO помог. Spark SQL: вложенные классы в паркетную ошибку

Но его было трудно найти, поэтому я ответил на свой вопрос здесь. Надеюсь, это поможет кому-то еще, кто ищет пример.

person IceMan    schedule 14.04.2017