PySaprk:将临时视图转换为表并另存为.CSV在本地驱动器中

时间:2019-04-01 05:47:10

标签: python pyspark

我正在PySpark 2.4中创建JDBC查询的临时视图。我的数据源是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的文件夹,并在该文件夹中生成一个以part-00000-fd4c62bd-f208-4bd3-ae99-f81338b9ede1-c000.csv开头的csv文件。

因此,如果我每天运行.py文件(使用crontab之类的调度程序),这绝对不是一个好选择。

问题:

  1. 如何标准化.csv文件的名称,并且每天可以将新数据附加到同一文件中?

  2. 是否有任何简单的方法可以将df_new转换为表或Spark DataFrame。这样我才能申请df.coalesce(1).option("header","true").csv('/path/myfile.csv')

1 个答案:

答案 0 :(得分:0)

使用它保存到本地文件系统

    #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")