Azure Data Factory数据流Sink:如何配置分区文件大小?
针对你用Key分区(grid_id/_year/_month)后生成小文件的问题,以下几种方法可以在保持多文件的前提下调整文件大小:
直接设置Sink的文件大小阈值
在Sink的Optimize选项卡中,选择Key分区方式后,找到下方的File Size配置项,直接输入目标文件大小(比如100MB、1GB)。ADF会自动在每个grid_id/year/month分区目录下,将数据拆分成多个符合该大小的文件,不会合并为单个文件。这是最直接的配置方式,无需额外转换。前置Repartition转换控制分区数
在Sink节点之前添加一个Repartition转换,选择Fixed number of partitions模式,根据你的总数据量和目标文件大小计算合适的分区数(比如总数据100GB,目标每个文件100MB,就设置1000个分区)。后续Sink用Key分区输出时,每个grid_id/year/month目录下的文件数会由该Key对应的数据量和总分区数共同决定,最终生成的单个文件大小会接近预期值。这种方式适合需要精准控制全局分区数的场景。调整Spark作业资源配置
进入Data Flow的Settings选项卡,调整Spark的Executor核心数、Executor内存等参数。比如增加Executor数量或提升Executor内存,Spark会自动调整每个分区处理的数据量,间接让生成的文件变大。这种方法适合数据量波动较大的场景,需要根据实际数据规模测试调整参数。
注意:不要勾选Sink中的Merge files选项,否则会将每个分区下的文件合并为单个,不符合你的需求。
内容的提问来源于stack exchange,提问作者eaRamone

