Spark Scala: Как сохранить сгруппированный Dataframe в разные файлы? - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть фрейм данных со строковым столбцом: day и другими столбцами.Я хочу сделать что-то вроде этого:

my_df.groupBy("day").writeEachGroup.option("header","true").csv("[dayofthegroup].csv")

Фрейм данных my_df содержит данные за январь, я хотел бы получить 31 различных CSV, содержащих данные каждого дняи присвойте этим файлам название дня.

Я использую spark 2.1 и Scala 2.11.

Заранее благодарен за помощь!

1 Ответ

0 голосов
/ 19 сентября 2019

присваивают этим дням имя дня

Невозможно присвоить выходные имена произвольным именам, но вы можете переименовать их позже.

Я хотел бы получить 31 различный CSV, содержащий данные каждого дня

Если не обязательно иметь строго один файл в день, вы можете использовать partitionBy метод

val df = Seq(
      (1, "data1"),
      (1, "data1_1"),
      (2, "data2_1"),
      (3, "data3_1"),
      (4, "data4_1"),
      (4, "data4_2"),
      (4, "data4_3")
    ).toDF("day", "data")

df.write.option("header", true)
  .mode(SaveMode.Overwrite)
  .partitionBy("day")
  .csv("report")

Вывод:

day=1/
  - file1
  - file2
  -...

day=2/
  - file1
  - file2
  -...

...