【问题标题】:Merge multiple csv files to one csv file in Azure Blob Storage using pyspark使用 pyspark 将多个 csv 文件合并到 Azure Blob 存储中的一个 csv 文件
【发布时间】:2019-12-25 02:50:05
【问题描述】:

我正在使用下面的代码将 csv 文件保存回 blob 存储,尽管它在循环运行时会创建多个文件。现在我想将它们合并到一个单独的 csv 文件中。虽然我用过dbutils.fs.cp/mv,但是没用

while start_date <= end_date:
df = spark.read.format("com.databricks.spark.csv").options(header="true", inferschema="true").load(inputFilePath)
df.coalesce(1).write.mode("append").option("header","true").format("com.databricks.s`park.csv").save(TargetPath)`

下面发布了一个类似的请求,但它是使用 pandas 数据框完成的,我正在使用 spark 数据框寻找一些东西。 "Copy data from multiple csv files into one csv file"

【问题讨论】:

  • while 循环在这里做什么?因为在每次迭代中它都会创建一个新的 df 并且如果 inputFilePath 是文件的路径而不是目录,则一次只读取一个文件。
  • @Waqas - 根据开始日期和结束日期,它会循环并一次读取一个文件。有没有更好的方法来完成这项工作?
  • 检查我的答案

标签: azure pyspark azure-blob-storage azure-databricks


【解决方案1】:

我的建议是,使用 while 循环创建要读取的 csv 文件列表,然后使用 spark csv 阅读器一次读取所有文件。例如:

files = []
while start_date <= end_date:
    files.append(inputFilePath)


df = spark.read.format("com.databricks.spark.csv").options(header="true", inferschema="true").csv(files)

df.coalesce(1).write.mode("append").option("header","true").format("com.databricks.spark.csv").save(TargetPath)

【讨论】:

  • 很高兴它有帮助
猜你喜欢
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2019-10-11
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-01
相关资源
最近更新 更多