如何通过ADF将ADLS Gen2多层级JSON文件摄取至ADX
ADX&ADF数据摄取问题解答
问题1:是否需要为每个JSON文件创建单独的ADX表
完全不需要。
哪怕你有1000个甚至更多JSON文件,只要文件内的业务数据结构一致,只需要创建1张对应Schema的ADX目标表承载所有数据即可。ADX本身就是为海量数据批量加载设计的,天然支持递归遍历存储路径下的所有同结构文件写入单表,你这种按年/月/日/小时分层的目录结构,反而属于ADX推荐的分区存储模式,摄取时还可以直接把路径里的项目名、demo标识、时间分区字段提取成表的额外列,大幅提升后续查询的过滤效率。
如果按单个文件粒度创建上千张表,会造成ADX集群元数据冗余,后续查询、权限配置、运维的成本会极高,完全不符合ADX的使用最佳实践。只有当不同路径下的JSON数据Schema完全不一致、业务逻辑完全独立时,才需要按数据分类创建少量对应表,按路径筛选对应分类的文件写入即可。
问题2:ADF配置ADLS Gen2到ADX复制操作的步骤
按下面的流程配置即可:
- 前置准备:先在ADX目标库中创建好对应Schema的目标表,需要提取路径分区字段的话提前把这些字段加入表结构;给ADF实例的托管标识分配ADLS Gen2对应容器的存储Blob数据读取权限,以及ADX目标库、目标表的写入权限。
- 新建ADF管道,拖入「复制数据」活动到画布。
- 配置源端:新建ADLS Gen2类型的源数据集,文件格式选择JSON,路径指向所有JSON文件的公共根目录(即示例中的
UserData/Overground/UsersFolder/project1/main/data/json/层级),开启「递归读取」选项,ADF会自动扫描所有子文件夹下的全部JSON文件,无需逐个指定文件路径。如果你的JSON存在嵌套结构、数组格式,在源配置页调整对应的JSON解析规则即可。 - 配置接收器:新建Azure Data Explorer类型的接收数据集,选中你提前准备好的ADX集群、数据库、目标表。
- 字段映射:进入复制活动的「映射」配置页,将JSON文件内的字段和ADX表字段一一对应。如果需要提取路径中的分区信息(比如demo编号、年、月、日、小时),可以在源配置中开启保留文件路径属性,通过动态表达式截取路径对应位置的值,映射到ADX表的对应字段即可。
- 性能调优:在复制活动的「设置」页,将写入模式选择为「批量摄取」,根据文件总量调整并行复制的并发数;小文件较多的话建议开启ADX原生摄取选项,降低摄取开销,提升加载速度。
- 先做调试运行,抽查ADX表内的数据完整性、字段正确性,验证通过后可以根据业务需求配置定时触发器,实现定期全量/增量同步。
小提示:如果后续需要做增量同步,可以在源端配置按文件修改时间、或者路径中的时间分区做过滤,不需要每次都扫描全量目录下的所有文件。
内容的提问来源于stack exchange,提问作者MMV
相关产品推荐
相关产品推荐

