Compartir a través de

通过 Azure 门户在 Azure 数据工厂中使用 Hive 活动转换 Azure 虚拟网络中的数据

适用于:Azure 数据工厂 Azure Synapse Analytics

本教程使用 Azure 门户创建一个数据工厂管道,该管道可以使用 HDInsight 群集上的 Hive 活动转换 Azure 虚拟网络 (VNet) 中的数据。 在本教程中执行以下步骤:

  • 创建数据工厂。
  • 创建自承载 Integration Runtime
  • 创建 Azure 存储和 Azure HDInsight 链接服务
  • 使用 Hive 活动创建管道。
  • 触发管道运行。
  • 监视管道运行
  • 验证输出

如果没有 Azure 订阅,可在开始前创建一个试用帐户

先决条件

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

  • Azure 存储帐户。 创建 Hive 脚本并将其上传到 Azure 存储。 Hive 脚本的输出存储在此存储帐户中。 在本示例中,HDInsight 群集使用此 Azure 存储帐户作为主存储。

  • Azure 虚拟网络。 如果没有 Azure 虚拟网络,请遵照这些说明创建虚拟网络。 在本示例中,HDInsight 位于 Azure 虚拟网络中。 下面是 Azure 虚拟网络的示例配置。

    创建虚拟网络

  • HDInsight 群集。 创建一个 HDInsight 群集,并按照以下文章中所述,将该群集加入到在前一步骤中创建的虚拟网络:使用 Azure 虚拟网络扩展 Azure HDInsight。 下面是虚拟网络中 HDInsight 的示例配置。

    虚拟网络中的 HDInsight

  • Azure PowerShell。 遵循如何安装和配置 Azure PowerShell 中的说明。

  • 一个虚拟机。 创建一个 Azure 虚拟机 (VM),并将其加入到 HDInsight 群集所在的同一个虚拟网络。 有关详细信息,请参阅如何创建虚拟机

将 Hive 脚本上传到 Blob 存储帐户

  1. 创建包含以下内容的名为 hivescript.hql 的 Hive SQL 文件:

    DROP TABLE IF EXISTS HiveSampleOut; 
    CREATE EXTERNAL TABLE HiveSampleOut (clientid string, market string, devicemodel string, state string)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' 
    STORED AS TEXTFILE LOCATION '${hiveconf:Output}';
    
    INSERT OVERWRITE TABLE HiveSampleOut
    Select 
        clientid,
        market,
        devicemodel,
        state
    FROM hivesampletable
    
  2. 在 Azure Blob 存储中,创建名为 adftutorial 的容器(如果尚不存在)。

  3. 创建名为 hivescripts 的文件夹。

  4. hivescript.hql 文件上传到 hivescripts 子文件夹。

创建数据工厂

  1. 如果尚未创建数据工厂,请按照快速入门:使用 Azure 门户和 Azure 数据工厂工作室创建数据工厂中的步骤进行创建。 创建后,浏览到 Azure 门户中的数据工厂。

    Azure 数据工厂主页的屏幕截图,其中包含“打开 Azure 数据工厂工作室”磁贴。

  2. 在“打开 Azure 数据工厂工作室”磁贴上选择“打开”,以便在单独选项卡中启动“数据集成应用程序”。

创建自承载 Integration Runtime

由于 Hadoop 群集位于虚拟网络中,因此需要在同一个虚拟网络中安装自承载集成运行时 (IR)。 在本部分,我们将创建一个新的 VM、将其加入到同一个虚拟网络,然后在其上安装自承载 IR。 数据工厂服务可以使用自承载 IR 将处理请求分发到虚拟网络中的某个计算服务,例如 HDInsight。 自承载 IR 还可用于将数据移入/移出虚拟网络中的数据存储,以及移到 Azure。 当数据存储或计算资源位于本地环境中时,也可以使用自承载 IR。

  1. 在 Azure 数据工厂 UI 中,单击窗口底部的“链接”,切换到“集成运行时”选项卡,然后单击工具栏上的“+ 新建”按钮。

    新建集成运行时菜单

  2. 在“集成运行时安装”窗口中,选择“执行数据移动并将活动分发到外部计算”选项,然后单击“下一步”。

    选择执行数据移动并分发活动选项

  3. 选择“专用网络”,单击“下一步”。

    选择专用网络

  4. 在“名称”中输入 MySelfHostedIR,然后单击“下一步”。

    指定集成运行时名称

  5. 单击复制按钮复制集成运行时的身份验证密钥,并将其保存。 使窗口保持打开。 稍后将要使用此密钥注册虚拟机中安装的 IR。

    复制身份验证密钥

在虚拟机上安装 IR

  1. 在该 Azure VM 上,下载自我托管的集成运行时。 使用上一步骤中获取的身份验证密钥手动注册自承载集成运行时。

    注册集成运行时

  2. 成功注册自承载集成运行时后,会看到以下消息:

    已成功注册

  3. 单击“启动配置管理器”。 将节点连接到云服务后,会看到以下页:

    节点已连接

Azure 数据工厂 UI 中的自承载 IR

  1. Azure 数据工厂 UI 中,应会看到自承载 VM 的名称及其状态。

    现有的自承载节点

  2. 单击“完成”关闭“集成运行时安装”窗口。 集成运行时列表中会显示该自承载 IR。

    列表中的自承载 IR

创建链接服务

在本部分中创作并部署两个链接服务:

  • 一个用于将 Azure 存储帐户链接到数据工厂的 Azure 存储链接服务。 此存储是 HDInsight 群集使用的主存储。 在本例中,我们将使用此 Azure 存储帐户来存储 Hive 脚本以及该脚本的输出。
  • 一个 HDInsight 链接服务。 Azure 数据工厂将 Hive 脚本提交到此 HDInsight 群集以供执行。

创建 Azure 存储链接服务

  1. 切换到“链接的服务”选项卡,单击“新建”。

    “新建链接服务”按钮

  2. 在“新建链接服务”窗口中,选择“Azure Blob 存储”,然后单击“继续”。

    选择“Azure Blob 存储”

  3. 在“新建链接服务”窗口中执行以下步骤:

    1. 输入 AzureStorageLinkedService 作为名称

    2. 为“通过集成运行时连接”选择“MySelfHostedIR”。

    3. 对于“存储帐户名称”,请选择自己的 Azure 存储帐户。

    4. 若要测试与存储帐户的连接,请单击“测试连接”。

    5. 单击“保存” 。

      指定 Azure Blob 存储帐户

创建 HDInsight 链接的服务

  1. 再次单击“新建”以创建另一个链接服务。

    “新建链接服务”按钮

  2. 切换到“计算”选项卡,选择“Azure HDInsight”,然后单击“继续”。

    选择“Azure HDInsight”

  3. 在“新建链接服务”窗口中执行以下步骤:

    1. 在“名称”中输入 AzureHDInsightLinkedService

    2. 选择“自带 HDInsight”。

    3. 对于“HDI 群集”,请选择自己的 HDInsight 群集。

    4. 输入 HDInsight 群集的用户名

    5. 输入该用户的密码

      Azure HDInsight 设置

本文假设你有权通过 Internet 访问该群集。 例如,可以通过 https://clustername.azurehdinsight.cn 连接到该群集。 此地址使用公共网关。如果已使用网络安全组 (NSG) 或用户定义的路由 (UDR) 限制了从 Internet 的访问,则该网关不可用。 要使数据工厂能够将作业提交到 Azure 虚拟网络中的 HDInsight 群集,需要相应地配置 Azure 虚拟网络,使 URL 可解析成 HDInsight 所用的网关的专用 IP 地址。

  1. 在 Azure 门户中,打开 HDInsight 所在的虚拟网络。 打开名称以 nic-gateway-0 开头的网络接口。 记下其专用 IP 地址。 例如 10.6.0.15。

  2. 如果 Azure 虚拟网络包含 DNS 服务器,请更新 DNS 记录,使 HDInsight 群集 URL https://<clustername>.azurehdinsight.cn 可解析成 10.6.0.15。 如果 Azure 虚拟网络中没有 DNS 服务器,可以通过编辑已注册为自承载集成运行时节点的所有 VM 的 hosts 文件 (C:\Windows\System32\drivers\etc) 并添加如下所示的条目,来暂时解决此问题:

    10.6.0.15 myHDIClusterName.azurehdinsight.cn

创建管道

本步骤创建包含 Hive 活动的新管道。 该活动执行 Hive 脚本来返回示例表中的数据,并将其保存到定义的路径。

请注意以下几点:

  • scriptPath 指向用于 MyStorageLinkedService 的 Azure 存储帐户中的 Hive 脚本路径。 此路径区分大小写。
  • Output 是 Hive 脚本中使用的参数。 使用 wasbs://<Container>@<StorageAccount>.blob.core.chinacloudapi.cn/outputfolder/ 格式指向 Azure 存储中的现有文件夹。 此路径区分大小写。
  1. 在数据工厂 UI 中,单击左窗格中的“+”(加号),然后单击“管道”。

    “新建管道”菜单

  2. 在“活动”工具箱中展开“HDInsight”,将“Hive”活动拖放到管道设计器图面。

    拖放 Hive 活动

  3. 在属性窗口中切换到“HDI 群集”选项卡,然后为“HDInsight 链接服务”选择“AzureHDInsightLinkedService”。

    选择“HDInsight 链接服务”

  4. 切换到“脚本”选项卡,然后执行以下步骤:

    1. 为“脚本链接服务”选择“AzureStorageLinkedService”。

    2. 对于“文件路径”,请单击“浏览存储”。

      浏览存储

    3. 在“选择文件或文件夹”窗口中导航到 adftutorial 容器中的 hivescripts 文件夹,选择 hivescript.hql,然后单击“完成”。

      选择文件或文件夹

    4. 确认“文件路径”中显示了 adftutorial/hivescripts/hivescript.hql

      脚本设置

    5. 在“脚本”选项卡中,展开“高级”部分。

    6. 单击“参数”对应的“从脚本自动填充”。

    7. 使用以下格式输入“输出”参数的值:wasbs://<Blob Container>@<StorageAccount>.blob.core.chinacloudapi.cn/outputfolder/。 例如:wasbs://adftutorial@mystorageaccount.blob.core.chinacloudapi.cn/outputfolder/

      脚本参数

  5. 若要将项目发布到数据工厂,请单击“发布”。

    屏幕截图显示了用于发布到数据工厂的选项。

触发管道运行

  1. 首先,请单击工具栏中的“验证”按钮来验证管道。 单击右箭头 (>>) 关闭“管道验证输出”窗口。

    验证管道

  2. 若要触发某个管道运行,请在工具栏中单击“触发器”,然后单击“立即触发”。

    立即触发

监视管道运行

  1. 在左侧切换到“监视”选项卡。 “管道运行”列表中会显示一个管道运行。

    监视管道运行

  2. 若要刷新列表,请单击“刷新”。

  3. 若要查看与管道运行相关联的活动运行,请单击“操作”列中的“查看活动运行”。 其他操作链接用于停止/重新运行管道。

    查看活动运行

  4. 只能看到一个活动运行,因为该管道中只包含一个 HDInsightHive 类型的活动。 若要切换回到上一视图,请单击顶部的“管道”链接。

    活动运行

  5. 确认可以在 adftutorial 容器的 outputfolder 中看到输出文件。

    输出文件

已在本教程中执行了以下步骤:

  • 创建数据工厂。
  • 创建自承载 Integration Runtime
  • 创建 Azure 存储和 Azure HDInsight 链接服务
  • 使用 Hive 活动创建管道。
  • 触发管道运行。
  • 监视管道运行
  • 验证输出

请转到下一篇教程,了解如何在 Azure 上使用 Spark 群集转换数据: