在 Azure 数据工厂和 Synapse Analytics 中使用 Spark 活动转换数据
适用于: Azure 数据工厂 Azure Synapse Analytics
提示
试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用!
数据工厂和 Synapse 管道中的 Spark 活动在自己的或按需 HDInsight 群集上执行 Spark 程序。 本文基于数据转换活动一文,它概述了数据转换和受支持的转换活动。 使用按需的 Spark 链接服务时,此服务会自动为你实时创建用于处理数据的 Spark 群集,然后在处理完成后删除群集。
通过 UI 将 Spark 活动添加到管道
若要对管道使用 Spark 活动,请完成以下步骤:
在管道的“活动”窗格中搜索“Spark”,然后将“Spark”活动拖到管道画布上。
在画布上选择新的 Spark 活动(如果尚未选择)。
选择“HDI 群集”选项卡以选择或创建新的链接到 HDInsight 群集的服务,该群集将用于执行 Spark 传输活动。
选择“脚本 / Jar”选项卡以选择或创建新的作业链接服务到将托管脚本的 Azure 存储帐户。 指定要在其中执行的文件的路径。 还可以配置高级详细信息,包括代理用户、调试配置以及要传递给脚本的自变量和 Spark 配置参数。
Spark 活动属性
下面是 Spark 活动的示例 JSON 定义:
{
"name": "Spark Activity",
"description": "Description",
"type": "HDInsightSpark",
"linkedServiceName": {
"referenceName": "MyHDInsightLinkedService",
"type": "LinkedServiceReference"
},
"typeProperties": {
"sparkJobLinkedService": {
"referenceName": "MyAzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"rootPath": "adfspark",
"entryFilePath": "test.py",
"sparkConfig": {
"ConfigItem1": "Value"
},
"getDebugInfo": "Failure",
"arguments": [
"SampleHadoopJobArgument1"
]
}
}
下表描述了 JSON 定义中使用的 JSON 属性:
属性 | 描述 | 必需 |
---|---|---|
name | 管道中活动的名称。 | 是 |
description | 描述活动用途的文本。 | 否 |
type | 对于 Spark 活动,活动类型是 HDInsightSpark。 | 是 |
linkedServiceName | 运行 Spark 程序的 HDInsight Spark 链接服务的名称。 若要了解此链接服务,请参阅计算链接服务一文。 | 是 |
SparkJobLinkedService | 用于保存 Spark 作业文件、依赖项和日志的 Azure 存储链接服务。 此处仅支持 Azure Blob 存储和 ADLS Gen2 链接服务 。 如果未指定此属性的值,将使用与 HDInsight 群集关联的存储。 此属性的值只能是 Azure 存储链接服务。 | 否 |
rootPath | 包含 Spark 文件的 Azure Blob 容器和文件夹。 文件名称需区分大小写。 有关此文件夹结构的详细信息,请参阅“文件夹结构”部分(下一部分)。 | 是 |
entryFilePath | Spark 代码/包的根文件夹的相对路径 条目文件必须是 Python 文件或 .jar 文件。 | 是 |
className | 应用程序的 Java/Spark main 类 | 否 |
参数 | Spark 程序的命令行参数列表。 | 否 |
proxyUser | 用于模拟执行 Spark 程序的用户帐户 | 否 |
sparkConfig | 指定在以下主题中列出的 Spark 配置属性的值:Spark 配置 - 应用程序属性。 | 否 |
getDebugInfo | 指定何时将 Spark 日志文件复制到 HDInsight 群集使用的(或者)sparkJobLinkedService 指定的 Azure 存储。 允许的值:None、Always 或 Failure。 默认值:无。 | 否 |
文件夹结构
与 Pig/Hive 作业相比,Spark 作业的可扩展性更高。 对于 Spark 作业,可以提供多个依赖项,例如 jar 包(放在 Java CLASSPATH 中)、Python 文件(放在 PYTHONPATH 中)和其他任何文件。
在 HDInsight 链接服务引用的 Azure Blob 存储中创建以下文件夹结构。 然后,将依赖文件上传到 entryFilePath 表示的根文件夹中的相应子文件夹。 例如,将 Python 文件上传到根文件夹的 pyFiles 子文件夹,将 jar 文件上传到根文件夹的 jars 子文件夹。 在运行时,此服务需要 Azure Blob 存储中的以下文件夹结构:
路径 | 说明 | 必需 | 类型 |
---|---|---|---|
. (根) |
Spark 作业在存储链接服务中的根路径 | 是 | 文件夹 |
<用户定义> | 指向 Spark 作业入口文件的路径 | 是 | 文件 |
./jars | 此文件夹下的所有文件将被上传并放置在群集的 Java 类路径中 | 否 | 文件夹 |
./pyFiles | 此文件夹下的所有文件将上传并放置在群集的 PYTHONPATH 中 | 否 | 文件夹 |
./files | 此文件夹下的所有文件将上传并放置在执行器工作目录中 | 否 | 文件夹 |
./archives | 此文件夹下的所有文件未经压缩 | 否 | 文件夹 |
./logs | 包含 Spark 群集的日志的文件夹。 | 否 | 文件夹 |
以下示例显示了一个在 HDInsight 链接服务引用的 Azure Blob 存储中包含两个 Spark 作业文件的存储。
SparkJob1
main.jar
files
input1.txt
input2.txt
jars
package1.jar
package2.jar
logs
archives
pyFiles
SparkJob2
main.py
pyFiles
scrip1.py
script2.py
logs
archives
jars
files
相关内容
参阅以下文章了解如何以其他方式转换数据: