数据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?
您可以尝试两步过程。
- 将 CSV 中的所有文件合并为 Parquet 格式。
- 将该 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/
生成约 90 个不同的 100 MB 压缩 CSV 文件后,我想将它们全部合并到一个文件中。使用内置的合并选项进行数据复制过程,似乎需要十几个小时才能完成此操作。
https://i.stack.imgur.com/yymnW.png
如何快速合并 blob/ADLS 存储中的许多文件与数据 Factory/Synapse?
您可以尝试两步过程。
- 将 CSV 中的所有文件合并为 Parquet 格式。
- 将该 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/