你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:
Azure 数据工厂
Azure Synapse Analytics
提示
Microsoft Fabric 中的 Data Factory 是下一代 Azure 数据工厂,具有更加简化的架构、内置人工智能和新功能。 如果不熟悉数据集成,请从Fabric数据工厂开始。 现有 ADF 工作负载可以升级到 Fabric,以跨数据科学、实时分析和报告访问新功能。
如果你不熟悉Azure 数据工厂,请参阅 引入到 Azure 数据工厂。
在本教程中,你将使用数据工厂用户界面(UI)创建一个管道,该管道通过在数据工厂托管的虚拟网络中使用映射数据流,将数据从 Azure Data Lake Storage Gen2 源复制并转换到 Data Lake Storage Gen2 接收器(同时仅允许访问所选网络)。 当你使用映射数据流来转换数据时,可以扩展本教程中的配置模式。
在本教程中,将执行以下步骤:
- 创建数据工厂。
- 创建包含数据流活动的管道。
- 构建具有四个转换的映射数据流。
- 测试性运行管道。
- 监视数据流活动。
先决条件
- Azure 订阅。 如果没有 Azure 订阅,请在开始前创建一个免费 Azure 帐户。
- Azure存储帐户。 使用 Data Lake Storage 作为源和接收器数据存储。 如果没有存储帐户,请参阅 创建Azure存储帐户,了解创建存储帐户的步骤。 确保存储帐户仅允许来自选定的网络的访问。
本教程中要转换的文件是 moviesDB.csv,可在此GitHub内容网站找到该文件。 若要从GitHub检索文件,请将内容复制到所选文本编辑器中,将其本地保存为 .csv 文件。 若要将文件上传到存储帐户,请参阅使用 Azure 门户上传 blob。 这些示例将引用名为 sample-data 的容器。
创建数据工厂
在此步骤中,你将创建数据工厂,并打开数据工厂 UI,以在此数据工厂中创建管道。
打开Microsoft Edge或 Google Chrome。 目前,只有Microsoft Edge和 Google Chrome Web 浏览器支持数据工厂 UI。
在左侧菜单中,选择“创建资源”“Analytics”>“数据工厂”。
在“新建数据工厂”页的“名称”下输入 ADFTutorialDataFactory 。
数据工厂的名称必须全局唯一。 如果收到有关名称值的错误消息,请为数据工厂输入其他名称(例如 yournameADFTutorialDataFactory)。 有关数据工厂项目的命名规则,请参阅数据工厂命名规则。
选择要在其中创建数据工厂的 Azure 订阅。
对于“资源组”,请执行以下步骤之一:
- 选择“使用现有资源组”,并从下拉列表选择现有的资源组。
- 选择“新建”,并输入资源组的名称。
若要了解资源组,请参阅 使用资源组来管理Azure资源。
在“版本”下选择“V2”。
在“位置”下选择数据工厂所在的位置。 下拉列表中仅显示支持的位置。 数据存储(例如,数据工厂使用的Azure 存储和Azure SQL 数据库)和计算(例如,Azure HDInsight)可以位于其他区域。
选择“创建” 。
创建完成后,通知中心内会显示通知。 选择“转到资源”以进入“数据工厂”页面。
选择 Open Azure 数据工厂 Studio以在单独的选项卡中启动数据工厂 UI。
在数据工厂托管的虚拟网络中创建 Azure IR
在此步骤中,你将创建 Azure IR,并启用数据工厂托管虚拟网络。
在数据工厂门户中,转到 Manage,然后选择 New创建新的 Azure IR。
在“集成运行时安装”页上,根据所需的功能选择要创建的集成运行时。 在本教程中,选择Azure、自承载然后单击Continue。
选择 Azure,然后单击 Continue创建Azure集成运行时。
在“虚拟网络配置(预览)”下,选择“启用” 。
选择“创建” 。
创建包含数据流活动的管道
在此步骤中,你将创建一个包含数据流活动的管道。
在Azure 数据工厂主页上,选择Orchestrate。
在管道的“属性”窗格中,输入“TransformMovies”作为管道名称。
在活动窗格中,展开移动和转换。 将数据流活动从窗格拖动到管道画布。
在 添加 data flow 弹出窗口中,选择“创建新的 data flow,然后选择 Mapping 数据流。 完成后,选择“确定”。
屏幕截图:显示 Mapping 数据流。
在“属性”窗格中,将数据流命名为“TransformMovies”。
在管道画布的顶部栏中,打开数据流调试滑块。 调试模式允许针对实时 Spark 群集进行转换逻辑的交互式测试。 数据流群集需要 5-7 分钟才能预热,建议用户在计划进行数据流开发时先启用调试。 有关详细信息,请参阅调试模式。
在数据流画布中构建转换逻辑
在创建数据流后,你会自动转到数据流画布。 在此步骤中,你将生成一个数据流,该数据流采用Data Lake Storage中的 moviesDB.csv 文件,并将喜剧的平均评分从 1910 年聚合到 2000 年。 然后将此文件写回到Data Lake Storage。
添加源转换
在此步骤中,将Data Lake Storage Gen2设置为源。
在数据流画布中,通过选中“添加源”框来添加源。
将源命名为 MoviesDB。 选择“新建”以创建新的源数据集。
选择 Azure Data Lake Storage Gen2,然后选择 Continue。
选择DelimitedText,然后选择Continue。
将数据集命名为 MoviesDB。 在“链接服务”下拉列表中,选择“新建”。
在链接服务创建屏幕中,将Data Lake Storage Gen2链接服务命名为ADLSGen2并指定身份验证方法。 然后输入连接凭据。 在本教程中,我们将使用帐户密钥连接到存储帐户。
请确保启用“交互式创作”。 它可能需要 1 分钟才能启用。
选择“测试连接”。 它应该会失败,因为存储帐户不允许在没有创建和批准专用终结点的情况下访问它。 在错误消息中,应会看到一个用于创建专用终结点的链接,可以通过该链接创建托管的专用终结点。 替代方法是直接转到“管理”选项卡,然后按照此部分中的说明操作来创建托管专用终结点。
让对话框保持打开状态,然后转到存储帐户。
按照此部分中的说明批准专用链接。
返回对话框。 再次选择“测试连接”,然后选择“创建”以部署链接服务 。
在“创建数据集”屏幕上的“文件路径”字段下,输入文件所在的位置。 在本教程中,文件 moviesDB.csv 位于容器 sample-data 中。 由于此文件有标题,因此请选中“第一行作为标题”复选框。 选择“来自连接/存储”,以直接从存储中的文件导入页眉架构。 完成后,选择“确定”。
如果调试群集已启动,请转到源转换的“数据预览”选项卡,然后选择“刷新”来获取数据快照。 可以使用数据预览来验证是否已正确配置转换。
创建托管专用终结点
如果在测试前面的连接时没有使用超链接,请遵循路径。 现在,需要创建一个托管的专用终结点,并将该终结点连接到你创建的链接服务。
转到“管理”选项卡。
注意
“管理”选项卡可能并非适用于所有数据工厂实例。 如果看不到该选项卡,可以通过选择“作者”“连接”“专用终结点”来访问专用终结点。>>
转到“托管专用终结点”部分。
选择“托管专用终结点”下的“+ 新建”。
从列表中选择 Azure Data Lake Storage Gen2 磁贴,然后选择 Continue。
输入创建的存储帐户的名称。
选择“创建” 。
几秒钟后,应会显示创建的专用链接需要审批。
选择创建的专用终结点。 可以看到一个超链接,该超链接将引导你在存储帐户级别批准专用终结点。
在存储帐户中批准专用链接
在存储帐户中,转到“设置”部分下的“专用终结点连接” 。
选中你创建的专用终结点旁边的复选框,然后选择“批准”。
添加描述,然后选择“是”。
返回到数据工厂中“管理”选项卡的“托管专用终结点”部分。
大约一分钟后,应会出现对专用终结点的批准。
添加筛选转换
在数据流画布上的源节点旁边,选择加号图标来添加新转换。 要添加的第一个转换是“筛选”。
将您的筛选器转换命名为 FilterYears。 选择“筛选依据”旁边的表达式框,以打开表达式生成器。 可在此处指定筛选条件。
数据流表达式生成器允许你以交互方式生成要用于各种转换的表达式。 表达式可以包含内置函数、输入架构中的列和用户定义的参数。 若要详细了解如何生成表达式,请参阅数据流表达式生成器。
在本教程中,你要筛选出在 1910 年到 2000 年之间上映的喜剧流派电影。 由于年份目前是字符串,因此你需要使用
toInteger()函数将其转换为整数。 使用大于或等于 (>=) 和小于或等于 (<=) 运算符与字面量年份值 1910 和 2000 进行比较。 将这些表达式与 and (&&) 运算符结合在一起。 表达式如下所示:toInteger(year) >= 1910 && toInteger(year) <= 2000若要找出哪些电影是喜剧,则可以使用
rlike()函数在“流派”列中查找“喜剧”模式。 将rlike表达式与年份比较结合可得到:toInteger(year) >= 1910 && toInteger(year) <= 2000 && rlike(genres, 'Comedy')如果有处于活动状态的调试群集,则可以通过选择“刷新”来查看表达式输出与所使用的输入之间的比较,以验证逻辑。 关于如何使用数据流表达式语言来实现此逻辑,有多个正确答案。
完成表达式后,选择“保存并完成”。
提取“数据预览”以验证筛选器是否正常工作。
添加聚合转换
要添加的下一个转换是“架构修饰符”下的“聚合”转换。
将聚合转换命名为“AggregateComedyRating”。 在“分组依据”选项卡中,从下拉框中选择“年份”,以按电影上映年份对聚合进行分组。
转到“聚合”选项卡。在左侧文本框中,将聚合列命名为 AverageComedyRating。 选择右侧的表达式框,以通过表达式生成器输入聚合表达式。
若要获取 Rating 列的平均值,请使用
avg()聚合函数。 由于“评分”是字符串,但 接受数字输入,因此必须通过avg()函数将值转换为数字。 该表达式如下所示:avg(toInteger(Rating))完成后,选择“保存并完成”。
转到“数据预览”选项卡以查看转换输出。 请注意,这里只包含两列,year 和 AverageComedyRating。
添加接收器转换
接下来,需要在“目标”下添加“接收器”转换。
将接收器命名为 Sink。 选择“新建”,以创建汇聚数据集。
在新数据集页上,选择Azure Data Lake Storage Gen2,然后选择Continue。
在“选择格式”页上,选中“DelimitedText”,然后选择“继续”。
将接收器数据集命名为 MoviesSink。 对于链接服务,选择你为源转换创建的同一 ADLSGen2 链接服务。 输入要向其写入数据的输出文件夹。 在本教程中,我们将写入到容器 sample-data 中的文件夹 output。 该文件夹不需要事先存在,可以动态创建。 选中“第一行作为标题”复选框,并为“导入架构”选择“无”。 选择“确定”。
现在,你已经完成了数据流的构建。 你已准备好在管道中运行它。
运行和监视数据流
可以在发布管道之前对其进行调试。 在此步骤中,你将触发数据流管道的调试运行。 虽然数据预览不写入数据,但调试运行会将数据写入到接收器目标中。
转到管道画布。 选择“调试”,以触发调试运行。
数据流活动的管道调试使用正在运行的调试群集,但初始化仍然至少需要一分钟。 可以通过“输出”选项卡跟踪进度。运行成功后,选择眼镜图标查看“运行详细信息”。
在“详细信息”页上,可以看到行数和每个转换步骤所花费的时间。
选择变换操作以获取有关数据列和分区的详细信息。
如果已正确遵循本教程,则应在接收器文件夹中写入 83 个行和 2 个列。 可以通过检查 Blob 存储来验证数据是否正确。
总结
在本教程中,你使用数据工厂 UI 创建了一个管道,此管道使用数据工厂托管虚拟网络中的映射数据流将数据从 Data Lake Storage Gen2 源复制并转换到 Data Lake Storage Gen2 接收器(两者都只允许访问选定的网络)。