数据Factory/Synapse:如何合并多个文件?

Data Factory/Synapse: How to merge many files?

生成约 90 个不同的 100 MB 压缩 CSV 文件后,我想将它们全部合并到一个文件中。使用内置的合并选项进行数据复制过程,似乎需要十几个小时才能完成此操作。

https://i.stack.imgur.com/yymnW.png

如何快速合并 blob/ADLS 存储中的许多文件与数据 Factory/Synapse?

您可以尝试两步过程。

  1. 将 CSV 中的所有文件合并为 Parquet 格式。
  2. 将该 Parquet 文件复制到 CSV 文件中。

写入 Parquet 通常很快(前提是您有干净的数据,例如列名中没有空格)并且它们的大小更小。

编辑 - ADF 数据流是另一种选择。如果这仍然不够快,那么您可能必须在 synapse 中创建一个 Spark Notebook 并编写 spark 代码。使用在时间和成本之间取得平衡的火花池大小。

很简单,只需将对象转换为 pandas 数据框,然后进行合并。

第 1 步:

df1= df1.select("*").toPandas()
df2= df2.select("*").toPandas()

第 2 步:

result = pd.concat([df1, df2], axis=1)

查看此 link 了解更多信息。

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html

此外,这里还有另一种技术需要考虑。

https://www.sqlservercentral.com/articles/merge-multiple-files-in-azure-data-factory

https://markcarrington.dev/2020/11/27/combining-data-with-azure-data-factory/