Я создаю временное представление запроса 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
), это определенно не лучший выбор.
Вопросы:
Как мне стандартизировать имя файла .csv и ежедневно добавлять новые данные в тот же файл?
Есть ли простой способ конвертировать df_new
в таблицу или Spark DataFrame
. Так что я могу применить df.coalesce(1).option("header","true").csv('/path/myfile.csv')
?