2016-05-18 4 views
-3

Предположим, у меня есть Dataset какого-либо класса case, например.Вывод раздела с помощью ключа в Spark с использованием набора данных API

case class Foo(colour: String, count: Int) 

val ds: Dataset[Foo] = sqlContext.createDataset(Seq(
    Foo("red", 10), 
    Foo("red", 22), 
    Foo("blue", 12) 
)) 

Как сохранить это в файловой системе распределяли по одному из полей, скажем, foo так что выходные каталоги будут:

/my-path/foo=red/ 
/my-path/foo=blue/ 

и содержимое будет выглядеть следующим образом

> cat /my-path/foo=red/* 
10 
22 

> cat /my-path/foo=blue/* 
12 

Есть ли простой способ сделать это, используя имя поля класса case?

ответ

1

В настоящее время (Спарк 1.4+)

ds.toDF().write.partitionBy("foo").text("/my-path") 

От Спарк 2.0 toDF(), вероятно, станет излишним, поскольку API, будут объединены.

Для других форматов, просто изменить text к json или parquet

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

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