你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 数据工厂或 Synapse Analytics 从 Spark 复制数据

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

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖了从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

本文概述如何使用 Azure 数据工厂或 Synapse Analytics 管道中的复制活动从 Spark 复制数据。 本文是基于概述复制活动总体的复制活动概述一文编写的。

重要

Spark 连接器版本 2.0 提供了改进的原生 Spark 支持。 如果在解决方案中使用 Spark 连接器版本 1.0,请在 2025 年 9 月 30 日之前升级 Spark 连接器。 有关版本 2.0 和版本 1.0 之间差异的详细信息,请参阅此部分

支持的功能

此 Spark 连接器支持以下功能:

支持的功能 红外线
复制活动(源/-) (1) (2)
Lookup 活动 (1) (2)

① Azure 集成运行时 ② 自承载集成运行时

有关复制活动支持作为源/接收器的数据存储列表,请参阅支持的数据存储表。

该服务提供用于启用连接的内置驱动程序,因此使用此连接器无需手动安装任何驱动程序。

先决条件

如果数据存储位于本地网络、Azure 虚拟网络或 Amazon Virtual Private Cloud 内部,则需要配置自承载集成运行时才能连接到该数据存储。

如果数据存储是托管的云数据服务,则可以使用 Azure Integration Runtime。 如果访问范围限制为防火墙规则中允许的 IP,你可以选择将 Azure Integration Runtime IP 添加到允许列表。

此外,还可以使用 Azure 数据工厂中的托管虚拟网络集成运行时功能访问本地网络,而无需安装和配置自承载集成运行时。

要详细了解网络安全机制和数据工厂支持的选项,请参阅数据访问策略

入门

若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:

使用 UI 创建一个到 Spark 的链接服务

使用以下步骤在 Azure 门户 UI 中创建一个到 Spark 的链接服务。

  1. 浏览到 Azure 数据工厂或 Synapse 工作区中的“管理”选项卡并选择“链接服务”,然后单击“新建”:

  2. 搜索 Spark 并选择 Spark 连接器。

    Spark 连接器的屏幕截图。

  3. 配置服务详细信息,测试连接,然后创建新的链接服务。

    Spark 的链接服务配置的屏幕截图。

连接器配置详细信息

对于特定于 Spark 连接器的数据工厂实体,以下部分提供有关用于定义这些实体的属性的详细信息。

链接服务属性

Spark 连接器现在支持版本 2.0。 请参阅此部分将 Spark 连接器版本从版本 1.0 升级。 有关属性详细信息,请参阅相应部分。

版本 2.0

Spark 链接服务版本 2.0 支持以下属性:

属性 说明 必选
类型 type 属性必须设置为:Spark
版本 指定的版本。 该值为 2.0
主机 Spark 服务器的 IP 地址或主机名
港口 Spark 服务器用来侦听客户端连接的 TCP 端口。 如果连接到 Azure HDInsight,请指定端口 443。
服务器类型 Spark 服务器的类型。
允许的值为:SparkThriftServer
thrift传输协议 Thrift 层中要使用的传输协议。
允许的值为:HTTP
验证类型 用于访问 Spark 服务器的身份验证方法。
允许的值为:Anonymous、UsernameAndPassword、WindowsAzureHDInsightService
用户名 用于访问 Spark 服务器的用户名。
密码 用户所对应的密码。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure 密钥保管库中的机密
httpPath 对应于 Spark 服务器的部分 URL。
启用SSL 指定是否使用 TLS 加密到服务器的连接。 默认值为 true。
启用服务器证书验证 指定连接时是否启用服务器 SSL 证书验证。
始终使用系统信任存储。 默认值为 true。
connectVia 用于连接到数据存储的集成运行时。 若要了解详细信息,请参阅先决条件部分。 如果未指定,则使用默认 Azure Integration Runtime。

示例:

{
    "name": "SparkLinkedService",
    "properties": {
        "type": "Spark",
        "version": "2.0",
        "typeProperties": {
            "host": "<cluster>.azurehdinsight.net",
            "port": "<port>",
            "authenticationType": "WindowsAzureHDInsightService",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        }
    }
}

版本 1.0

Spark 链接服务版本 1.0 支持以下属性:

属性 说明 必选
类型 type 属性必须设置为:Spark
主机 Spark 服务器的 IP 地址或主机名
港口 Spark 服务器用来侦听客户端连接的 TCP 端口。 如果连接到 Azure HDInsight,请指定端口 443。
服务器类型 Spark 服务器的类型。
允许的值为:SharkServer、SharkServer2、SparkThriftServer
thrift传输协议 Thrift 层中要使用的传输协议。
允许的值为:Binary、SASL、HTTP
验证类型 用于访问 Spark 服务器的身份验证方法。
允许的值为:Anonymous、Username、UsernameAndPassword、WindowsAzureHDInsightService
用户名 用于访问 Spark 服务器的用户名。
密码 用户所对应的密码。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure 密钥保管库中的机密
httpPath 对应于 Spark 服务器的部分 URL。
启用SSL 指定是否使用 TLS 加密到服务器的连接。 默认值为 False。
信任证书路径 (trustedCertPath) 包含受信任 CA 证书(通过 TLS 进行连接时用来验证服务器)的 .pem 文件的完整路径。 只有在自承载 IR 上使用 TLS 时才能设置此属性。 默认值是随 IR 一起安装的 cacerts.pem 文件。
useSystemTrustStore 指定是使用系统信任存储中的 CA 证书还是使用指定 PEM 文件中的 CA 证书。 默认值为 False。
allowHostNameCNMismatch 指定通过 TLS 进行连接时是否要求 CA 颁发的 TLS/SSL 证书名称与服务器的主机名相匹配。 默认值为 False。
allowSelfSignedServerCert 指定是否允许来自服务器的自签名证书。 默认值为 False。
connectVia 用于连接到数据存储的集成运行时。 若要了解详细信息,请参阅先决条件部分。 如果未指定,则使用默认 Azure Integration Runtime。

示例:

{
    "name": "SparkLinkedService",
    "properties": {
        "type": "Spark",
        "typeProperties": {
            "host": "<cluster>.azurehdinsight.net",
            "port": "<port>",
            "authenticationType": "WindowsAzureHDInsightService",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        }
    }
}

数据集属性

有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集一文。 本部分提供 Spark 数据集支持的属性列表。

要从 Spark 复制数据,请将数据集的 type 属性设置为 SparkObject。 支持以下属性:

属性 说明 必选
类型 数据集的类型属性必须设置为:SparkObject
图式 架构的名称。 否(如果指定了活动源中的“query”)
桌子 表的名称。 否(如果指定了活动源中的“query”)
表名称 具有架构的表名称。 支持此属性以提供后向兼容性。 为新的工作负荷使用 schematable 否(如果指定了活动源中的“query”)

示例

{
    "name": "SparkDataset",
    "properties": {
        "type": "SparkObject",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Spark linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

复制活动属性

有关可用于定义活动的各部分和属性的完整列表,请参阅管道一文。 本部分提供 Spark 数据源支持的属性列表。

Spark 作为源

要从 Spark 复制数据,请将复制活动中的源类型设置为“SparkSource”。 复制活动源部分支持以下属性:

属性 说明 必选
类型 复制活动源的 type 属性必须设置为:SparkSource
查询 使用自定义 SQL 查询读取数据。 例如:"SELECT * FROM MyTable" 否(如果指定了数据集中的“tableName”)

示例:

"activities":[
    {
        "name": "CopyFromSpark",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Spark input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SparkSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Spark 的数据类型映射

当你从/向 Spark 复制数据时,服务中会使用以下临时数据类型映射。 若要了解复制活动如何将源架构和数据类型映射到接收器,请参阅架构和数据类型映射

Spark 数据类型 临时服务数据类型(适用于版本 2.0) 临时服务数据类型(适用于版本 1.0)
BooleanType 布尔值 布尔值
ByteType Sbyte Int16
ShortType Int16 Int16
IntegerType Int32 Int32
LongType Int64 Int64
FloatType Single Single
DoubleType Double Double
DateType DateTime DateTime
TimestampType DateTimeOffset DateTime
StringType 字符串 字符串
BinaryType Byte[] Byte[]
DecimalType Decimal Decimal
ArrayType 字符串 字符串
StructType 字符串 字符串
MapType 字符串 字符串
TimestampNTZType DateTime DateTime
YearMonthIntervalType 字符串 不支持。 
DayTimeIntervalType 字符串 不支持。

“查找”活动属性

若要详细了解这些属性,请查看“查找”活动

升级 Spark 连接器

  1. “编辑链接服务 ”页中,选择 2.0 以获取版本,并通过引用 链接服务属性版本 2.0 配置链接服务

  2. Spark 链接服务版本 2.0 的数据类型映射不同于版本 1.0 的数据类型映射。 若要了解最新的数据类型映射,请参阅 Spark 的数据类型映射

Spark 版本 2.0 和版本 1.0 之间的差异

Spark 连接器版本 2.0 提供新功能,并与版本 1.0 的大多数功能兼容。 下表显示了版本 2.0 和版本 1.0 之间的功能差异。

版本 2.0 版本 1.0
serverType 不支持 SharkServer 和 SharkServer2。 支持 serverType 的 SharkServer 和 SharkServer2。
thriftTransportProtocl 不支持二进制和 SASL。 支持 thriftTransportProtocl 的二进制和 SASL。
不支持用户名身份验证类型。 支持用户名身份验证类型。
enableSSL 的默认值为 true。 不支持 trustedCertPathuseSystemTrustStoreallowHostNameCNMismatchallowSelfSignedServerCert

支持 enableServerCertificateValidation
enableSSL 的默认值为 false。 此外,支持 trustedCertPathuseSystemTrustStoreallowHostNameCNMismatchallowSelfSignedServerCert

不支持 enableServerCertificateValidation
以下映射用于从 Spark 数据类型到服务内部使用的临时服务数据类型。

TimestampType -> DateTimeOffset
YearMonthIntervalType -> 字符串
DayTimeIntervalType -> 字符串
以下映射用于从 Spark 数据类型到服务内部使用的临时服务数据类型。

时间戳类型 -> 日期时间
左侧列出的受版本 2.0(预览版)支持的其他映射不受版本 1.0 支持。

有关复制活动支持作为源和接收器的数据存储的列表,请参阅支持的数据存储