本文属于【Azure Data Platform】系列。
接上文:【Azure Data Platform】ETL工具(6)——重新认识Azure Data Factory
本文详细介绍ADF 核心组件之一——Copy Data
https://www.cathrinewilhelmsen.net/copy-data-activity-azure-data-factory/
Copy Data Activity
Copy Data 这个活动,包含了6部分:常规(General),源(Source), 接收器(Sink), 映射(Mapping), 设置(Settings),用户属性(User Properties)
常规
打了(*)号的意味者必填项。当然, 它有默认值,不过真正使用时不应该使用默认值。比如名称。
然后注意对于那些要填入的项,可以把鼠标移去下图的符号中获取解释。
上面的配置,也可以在源代码(JSON格式)中看到并调整,如下图点开【查看源代码】:
红框部分就是图形化中的配置值,可以看到这些值是术语“policy”
源和接收器
这两个就是数据源跟目标源的关系,初始界面很简单,可以选择现有的,或者使用【新建】来创建,随着项目越来越大,命名规范会变得非常重要,比如在我实践期间,比较随意地命名,最后发现很难从命名中快速定位自己想要的那个源或者接收器。
随后的界面会根据你选择的数据集,或者新建的源/接收器的种类而变更,因为有号称超过90种源,所以在这里就不一一演示了:
映射
映射是非常重要的一步,它用于调整源到接收器之间的数据关系。默认情况下,它是隐式映射,如果是不做改动,就像下图,那ADF会尽可能自己帮你一一对应。不过注意是“尽可能”而已。
如果需要显式转换,比如源中的某个列名在接收器中需要被改名,或者源和接收器的结构不一致,那么就要用到显式转换。使用【新建映射】或者【导入架构】之后再调整来实现显式转换。
设置
从其内容看得出它的功能更多是性能,安全方面的配置。
-
数据集成单元: Data Integration Units (DIUs),由于ADF运行在微软托管的资源上,不能直接修改硬件资源,可以通过DIUs进行一定程度的调整。1个DIU是CPU, 内存, 网络资源的整合,类似于SQL DW, SQL DB中的一些DWU, DTU的概念。但是没有一个准确的值,不过貌似也并不是非常重要。从下面两个图看出,DIU在自动模式下的值和非自动模式下的可选DIU值:
但是点开里面的官方文档后,发现自动模式并不是总是从2开始的:
对于大数据集来说,自动模式可能会更好,对于非常小的数据集,选择2 个DIUs会更省钱。 -
复制并行度:定义了在copy data这个活动中,从源中读取数据或写到接收器中的最大并行连接数。至于用多大,这个估计只有具体问题具体分析才能回答了。
-
容错:就是遇到错误时的跳过策略,按照具体情况而选择。
-
启用日志记录:参考文档
-
启用暂存
这个选项可以把数据临时存储在Blob 上,可以借助SQL DW的Polybase功能优化导入性能。不过要记住这里是临时存储数据,一旦Copy Data活动完成之后,数据就会被清除掉。 而且在底层,它类似于使用两个copy data活动。这样可以节省了类似的第二个copy data活动,不过每个活动的执行都需要付费。
Copy Data处理过程
来个微软官网的图:
当你进行“原样”复制时,速度是很快的,直接从源到接收器。不过这样使用copy data活动就略显浪费,它还是很强大的。
比如需要把一个CSV导入SQL DB时, 需要把数据从人可识别的形式转换成机器可识别的bit/bytes(序列化),然后通过网络传输后变回数据(反序列化)再入库。
除了序列化和反序列化,还有压缩和解压,如果你传输一个压缩文件,不需要特意操作,copy data 活动会在你选择源文件的格式是zipped和接收器格式为unzipped时帮你自动解压或压缩。
总结
虽然说是详解,但是实际上更多只是概要介绍,所以接下来再用几篇文章来完成“详解”。本来打算在这里写监控,但是监控通常更多是管道级别,所以还是决定独立一篇。