Можно ли добавить данные DataFrame в существующий CSV-файл? - PullRequest
1 голос
/ 29 апреля 2019

На удаленном SFTP сервере у меня есть csv файл с некоторыми данными. Можно ли добавить данные DataFrame в этот существующий файл? Другими словами, предыдущие данные внутри CSV-файла не должны быть перезаписаны.

Я использую библиотеку spark-sftp для этой задачи и замечаю, что код ниже воссоздает файл. Другими словами, предыдущие данные внутри CSV-файла исчезают. Что вы можете посоветовать для улучшения этой ситуации?

val df: DataFrame = Seq(
    ("Alex", "2018-01-01 00:00:00", "2018-02-01 00:00:00", "OUT"),
    ("Bob", "2018-02-01 00:00:00", "2018-02-05 00:00:00", "IN"),
    ("Kate", "2018-02-01 00:00:00", "2018-02-05 00:00:00", "IN"),
    ("Alice", "2018-02-01 00:00:00", "2018-02-05 00:00:00", "OUT"),
).toDF("FIRST_NAME", "START_DATE", "END_DATE", "STATUS")

df.write.
    format("com.springml.spark.sftp").
    option("host", "XXXX").
    option("username", "XXXX").
    option("password", "****").
    option("fileType", "csv").
    option("delimiter", ";").
    save("/PATH/test.csv")

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Просто добавьте опцию режима добавления:

    mode(SaveMode.Append).

Полный пример:

import org.apache.spark.sql.SaveMode
df.write.
    format("com.springml.spark.sftp").
    option("host", "XXXX").
    option("username", "XXXX").
    option("password", "****").
    option("fileType", "csv").
    option("delimiter", ";").
    mode(SaveMode.Append).
    save("/PATH/test.csv")
0 голосов
/ 29 апреля 2019

Вам нужно написать в режиме добавления.

df.write.
mode("append").
format("com.springml.spark.sftp")
...
...