PySaprk: преобразование временного представления в таблицу и сохранение в формате .CSV на локальном диске - PullRequest
0 голосов
/ 01 апреля 2019

Я создаю временное представление запроса JDBC в PySpark 2.4. Мой источник данных MS SQL Server 2017.

df = spark.read.format("jdbc").options(url="url",properties = { "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver" },dbtable="dbtable").load()
df.createOrReplaceTempView("df_temp")

Теперь я могу запросить временную созданную таблицу как

df_new = spark.sql("select * from df_temp where ...#standard query")

Теперь я хочу написать выше df_new как CSV на моем локальном диске. Один из способов (и в настоящее время я делаю то же самое) - преобразовать это df_new.toPandas(). А затем сохраните его как csv (стандартный метод df.to_csv('/path/file.csv'). Этот метод создает папку с именем file.csv, и в этой папке создается CSV-файл с именем, начинающимся с part-00000-fd4c62bd-f208-4bd3-ae99-f81338b9ede1-c000.csv.

Так что, если я запускаю свой файл .py ежедневно (используя планировщик типа crontab), это определенно не лучший выбор.

Вопросы:

  1. Как мне стандартизировать имя файла .csv и ежедневно добавлять новые данные в тот же файл?

  2. Есть ли простой способ конвертировать df_new в таблицу или Spark DataFrame. Так что я могу применить df.coalesce(1).option("header","true").csv('/path/myfile.csv')?

1 Ответ

0 голосов
/ 01 апреля 2019

Используйте это для сохранения в локальной файловой системе

    #for Output in multiple files:
    df.write.option("header", "true").csv("/path/output.csv")

    #for output in single file:
    df.coalesce(1).write.option("header", "true").csv("/path/output.csv")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...