你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:
Azure 数据工厂
Azure Synapse Analytics
提示
Microsoft Fabric 中的 Data Factory 是下一代 Azure 数据工厂,具有更加简化的架构、内置人工智能和新功能。 如果不熟悉数据集成,请从Fabric数据工厂开始。 现有 ADF 工作负载可以升级到 Fabric,以跨数据科学、实时分析和报告访问新功能。
如果你不熟悉Azure 数据工厂,请参阅 引入到 Azure 数据工厂。
在本教程中,你将了解将文件写入 ADLS Gen2 或使用数据流Azure Blob 存储时可以应用的最佳做法。 需要访问 Azure Blob 存储 帐户或 Azure Data Lake Store Gen2 帐户才能读取 parquet 文件,然后将结果存储在文件夹中。
Prerequisites
- Azure 订阅。 如果没有 Azure 订阅,请在开始前创建一个免费 Azure 帐户。
- Azure存储帐户。 将 ADLS 存储用作“源”和“接收器”数据存储。 如果没有存储帐户,请参阅 创建Azure存储帐户,了解创建存储帐户的步骤。
本教程中的步骤假定你
创建数据工厂
在此步骤中,你将创建数据工厂并打开数据工厂 UI,以在此数据工厂中创建管道。
打开 Microsoft Edge 或 Google Chrome。 目前,数据工厂 UI 仅在 Microsoft Edge 和 Google Chrome Web 浏览器中受支持。
在左侧菜单中,选择“创建资源>集成>数据工厂”
在“新建数据工厂”页上,在“名称”下输入 ADFTutorialDataFactory
选择要在其中创建数据工厂的 Azure 订阅。
对于“资源组”,请执行以下步骤之一:
a。 选择“使用现有资源组”,并从下拉列表选择现有的资源组。
b. 选择“新建”,并输入资源组的名称。 若要了解资源组,请参阅 使用资源组来管理Azure资源。
在“版本”下选择“V2”。
在“位置”下选择数据工厂所在的位置。 下拉列表中仅显示支持的位置。 数据存储(例如,Azure 存储和 SQL 数据库)和数据工厂使用的计算(例如,Azure HDInsight)可以位于其他区域。
选择“创建”。
创建完成后,通知中心内会显示通知。 选择“转到资源”导航到“数据工厂”页。
选择“创作和监视”,在单独的选项卡中启动数据工厂 UI。
创建包含数据流活动的管道
在此步骤中,你将创建一个包含数据流活动的管道。
在Azure 数据工厂主页上,选择Orchestrate。
在管道的“常规”选项卡中,输入“DeltaLake”作为管道的名称。
在工厂顶部栏中,将数据流调试滑块打开。 调试模式允许针对实时 Spark 群集进行转换逻辑的交互式测试。 数据流群集需要 5-7 分钟才能预热,建议用户在计划进行数据流开发时先启用调试。 有关详细信息,请参阅 调试模式。
在“活动”窗格中,展开“移动和转换”可折叠部分。 将数据流活动从窗格拖放到管道画布。
在数据流画布中构建转换逻辑
你将获取任何源数据(在本教程中,我们将使用 Parquet 文件源)并使用接收器转换,以便使用最有效的机制登录 Parquet 格式的数据,从而进行数据湖 ETL。
教程目标
- 在新的数据流 1 中选择任何源数据集。使用数据流有效地划分汇区数据集
- 在 ADLS Gen2 数据湖文件夹中登录分区数据
从空白数据流画布开始
首先,让我们为下述每个机制设置数据流环境,以便在 ADLS Gen2 中登录数据
- 单击源转换。
- 单击底部面板中数据集旁的新建按钮。
- 选择数据集或创建新数据集。 对于本演示,我们将使用名为 User Data 的 Parquet 数据集。
- 添加派生列转换。 我们会将此用作动态设置所需文件夹名称的方式。
- 添加接收器转换。
分层文件夹输出
使用数据中的唯一值创建文件夹层次结构以对数据湖中的数据进行分区,这种做法十分常见。 这是在数据湖和 Spark(数据流背后的计算引擎)中组织和处理数据的最佳方式。 但是,以这种方式组织输出会产生较小的性能成本。 在接收器中使用此机制时,预计总体管道性能会略有下降。
- 返回到数据流设计器并编辑上面的数据流创建。 单击接收器转换。
- 单击“优化”>“设置分区”>“键”
- 选取要用于设置分层文件夹结构的列。
- 请注意,下面的示例使用年份和月份作为用于文件夹命名的列。 结果是得到形式为
releaseyear=1990/month=8的文件夹。 - 访问数据流源中的数据分区时,只需指向
releaseyear上面的顶层文件夹,并对每个后续文件夹使用通配符模式,例如:**/**/*.parquet - 若要操作数据值,或者即使需要为文件夹名称生成合成值,请使用派生列转换创建要在文件夹名称中使用的值。
将文件夹命名为数据值
对于使用 ADLS Gen2 的数据湖数据,一种性能稍好,但没有提供与键/值分区相同的好处的接收器方法是 Name folder as column data。 虽然分层结构的键分区样式使你能够更轻松地处理数据切片,但这种方法是一个可以更快地写入数据的平展文件夹结构。
- 返回到数据流设计器并编辑上面的数据流创建。 单击接收器转换。
- 单击“优化”>“设置分区”>“使用当前分区”。
- 单击“设置”>“将文件夹命名为列数据”。
- 选择要用于生成文件夹名称的列。
- 若要操作数据值,或者即使需要为文件夹名称生成合成值,请使用派生列转换创建要在文件夹名称中使用的值。
将文件命名为数据值
上面教程中所列的方法是在数据湖中创建文件夹类别的良好用例。 这些方法采用的默认文件命名方案是使用 Spark 执行程序作业 ID。 有时可能想要在数据流文本接收器中设置输出文件的名称。 此方法仅建议用于小文件。 将分区文件合并到单个输出文件中的过程是一个长时间运行的过程。
- 返回到数据流设计器并编辑上面的数据流创建。 单击接收器转换。
- 单击“优化”>“设置分区”>“单个分区”。 正是这一单个分区要求在合并文件时造成了执行过程中的瓶颈。 此选项仅建议用于小文件。
- 单击“设置”>“将文件命名为列数据”。
- 选择要用于生成文件名的列。
- 若要操作数据值,或者即使需要为文件名生成合成值,请使用派生列转换创建要在文件名中使用的值。
相关内容
了解有关数据流接收器的详细信息。