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

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

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

提示

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

本文概述如何使用 Azure 数据工厂和 Synapse Analytics 管道中的复制活动从 Amazon Redshift 复制数据。 它是基于概述复制活动总体的复制活动概述一文。

重要

Amazon Redshift 版本 2.0(预览版)提供改进的原生 Amazon Redshift 支持。 如果在解决方案中使用 Amazon Redshift 版本 1.0,建议尽早 升级 Amazon Redshift 连接器 。 有关版本 2.0(预览版)和版本 1.0 之间的差异的详细信息,请参阅本 部分

支持的功能

此 Amazon Redshift 连接器支持以下功能:

支持的功能 红外线
复制活动(源/-) ①(仅适用于版本 1.0)②
Lookup 活动 ①(仅适用于版本 1.0)②

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

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

对于版本 2.0(预览版),需要手动 安装 Amazon Redshift ODBC 驱动程序 。 对于版本 1.0,该服务提供用于启用连接的内置驱动程序,因此无需手动安装任何驱动程序。

Amazon Redshift 连接器支持通过查询或利用内置的 Redshift UNLOAD 功能从 Redshift 检索数据。

连接器支持此文章中的 Windows 版本。

提示

若要在从 Redshift 复制大量数据时获得最佳性能,请考虑通过 Amazon S3 使用内置的 Redshift UNLOAD。 有关详细信息,请参阅使用 UNLOAD 从Amazon Redshift 复制数据部分。

先决条件

  • 如果使用自承载集成运行时将数据复制到本地数据存储,请授权集成运行时(使用计算机的 IP 地址)对 Amazon Redshift 群集的访问权限。 有关说明,请参阅授予对群集的访问权限。 如果使用版本 2.0,则自承载集成运行时版本应为 5.54.0.0 或更高版本。
  • 如果要将数据复制到 Azure 数据存储,请参阅 Azure 数据中心 IP 范围,了解 Azure 数据中心使用的计算 IP 地址和 SQL 范围。

入门

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

使用 UI 创建到 Amazon Redshift 的链接服务

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

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

  2. 搜索“Amazon”并选择“Amazon Redshift 连接器”。

    选择 Amazon Redshift 连接器。

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

    配置到 Amazon Redshift 的链接服务。

连接器配置详细信息

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

链接服务属性

Amazon Redshift 链接的服务支持以下属性:

属性 描述 必需
类型 type 属性必须设置为:AmazonRedshift
版本 指定的版本。 是,针对版本 2.0(预览版)。
服务器 Amazon Redshift 服务器的 IP 地址或主机名。
港口 Amazon Redshift 服务器用于侦听客户端连接的 TCP 端口数。 否,默认值为 5439
数据库 Amazon Redshift 数据库名称。
用户名 有权访问数据库的用户的名称。
密码 用户帐户密码。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure Key Vault 中的机密
connectVia 用于连接到数据存储的集成运行时
如果选择版本 2.0(预览版),则只能使用自承载集成运行时,其版本应为 5.54.0.0 或更高版本。
如果选择版本 1.0,可以使用 Azure Integration Runtime 或自承载集成运行时(如果数据存储位于专用网络中)。 如果未指定,则使用默认 Azure Integration Runtime。

示例:版本 2.0(预览版)

{
    "name": "AmazonRedshiftLinkedService",
    "properties":
    {
        "type": "AmazonRedshift",
        "version": "2.0",
        "typeProperties":
        {
            "server": "<server name>",
            "database": "<database name>",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

示例:版本 1.0

{
    "name": "AmazonRedshiftLinkedService",
    "properties":
    {
        "type": "AmazonRedshift",
        "typeProperties":
        {
            "server": "<server name>",
            "database": "<database name>",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

数据集属性

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

若要从 Amazon Redshift 复制数据,支持以下属性:

属性 描述 必需
类型 数据集的 type 属性必须设置为:AmazonRedshiftTable
图式 架构的名称。 否(如果指定了活动源中的“query”)
表的名称。 否(如果指定了活动源中的“query”)
表名称 具有架构的表的名称。 支持此属性是为了向后兼容。 对于新的工作负荷,请使用 schematable 否(如果指定了活动源中的“query”)

示例

{
    "name": "AmazonRedshiftDataset",
    "properties":
    {
        "type": "AmazonRedshiftTable",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Amazon Redshift linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

如果使用 RelationalTable 类型数据集,该数据集仍按原样受支持,但我们建议今后使用新数据集。

复制活动属性

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

作为源的 Amazon Redshift

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

属性 描述 必需
类型 复制活动 source 的 type 属性必须设置为:AmazonRedshiftSource
查询 使用自定义查询读取数据。 例如:select * from MyTable。 否(如果指定了数据集中的“tableName”)
redshiftUnload设置 使用 Amazon Redshift UNLOAD 时的属性组。
s3LinkedServiceName 表示通过指定“AmazonS3”类型的链接服务名称,将用作临时存储的 Amazon S3。 是(如果使用的是 UNLOAD)
bucketName (存储桶名称) 指示 S3 Bucket 以存储临时数据。 如果未提供,此服务将自动生成它。 是(如果使用的是 UNLOAD)

示例:复制活动中使用 UNLOAD 的 Amazon Redshift 源

"source": {
    "type": "AmazonRedshiftSource",
    "query": "<SQL query>",
    "redshiftUnloadSettings": {
        "s3LinkedServiceName": {
            "referenceName": "<Amazon S3 linked service>",
            "type": "LinkedServiceReference"
        },
        "bucketName": "bucketForUnload"
    }
}

在下一节中,深入了解如何使用 UNLOAD 高效地从 Amazon Redshift 复制数据。

使用 UNLOAD 从Amazon Redshift 复制数据

UNLOAD 是 Amazon Redshift 提供的一种机制,可将查询结果卸载到 Amazon 简单存储服务 (Amazon S3) 上的一个或多个文件中。 Amazon 推荐使用此方式从 Redshift 复制大数据集。

示例:使用 UNLOAD、暂存复制和 PolyBase 将数据从 Amazon Redshift 复制到 Azure Synapse Analytics

对于此示例用例,复制活动按“redshiftUnloadSettings”中的配置将数据从 Amazon Redshift 卸载到 Amazon S3,然后按“stagingSettings”中指定的要求将数据从 Amazon S3 复制到 Azure Blob,最后使用 PolyBase 将数据载入 Azure Synapse Analytics。 所有临时格式均由复制活动正确处理。

Redshift 到 Azure Synapse Analytics 的复制工作流

"activities":[
    {
        "name": "CopyFromAmazonRedshiftToSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "AmazonRedshiftDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AmazonRedshiftSource",
                "query": "select * from MyTable",
                "redshiftUnloadSettings": {
                    "s3LinkedServiceName": {
                        "referenceName": "AmazonS3LinkedService",
                        "type": "LinkedServiceReference"
                    },
                    "bucketName": "bucketForUnload"
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": "AzureStorageLinkedService",
                "path": "adfstagingcopydata"
            },
            "dataIntegrationUnits": 32
        }
    }
]

Amazon Redshift 的数据类型映射

从 Amazon Redshift 复制数据时,以下映射从 Amazon Redshift 的数据类型应用到服务使用的内部数据类型。 若要了解复制活动如何将源架构和数据类型映射到接收器,请参阅架构和数据类型映射

Amazon Redshift 数据类型 临时服务数据类型(适用于版本 2.0(预览版)) 临时服务数据类型(适用于版本 1.0)
BIGINT Int64 Int64
布尔 布尔型 字符串
字符串 字符串
日期 DateTime DateTime
DECIMAL (精度 <= 28) 小数 小数
DECIMAL (精度 > 28) 字符串 字符串
双精度 加倍 加倍
整数 Int32 Int32
real 单身 单身
SMALLINT Int16 Int16
发短信 字符串 字符串
时间戳 DateTime DateTime
VARCHAR 字符串 字符串

查找活动属性

若要了解有关属性的详细信息,请查看 Lookup 活动

升级 Amazon Redshift 连接器

下面是帮助你升级 Amazon Redshift 连接器的步骤:

  1. “编辑链接服务 ”页中,选择版本 2.0(预览版),并通过引用 链接服务属性来配置链接服务

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

  3. 应用版本 5.54.0.0 或更高版本的自承载集成运行时。 版本 2.0(预览版)不支持 Azure Integration Runtime。

Amazon Redshift 连接器版本 2.0(预览版)和版本 1.0 之间的差异

Amazon Redshift 连接器版本 2.0(预览版)提供新功能,并与版本 1.0 的大多数功能兼容。 下表显示了版本 2.0(预览版)与版本 1.0 的功能差异。

版本 2.0(预览版) 版本 1.0
仅支持版本 5.54.0.0 或更高版本的自承载集成运行时。 支持 Azure 集成运行时和自承载集成运行时。
以下映射用于将 Amazon Redshift 数据类型映射到临时服务数据类型。

BOOLEAN -> 布尔
以下映射用于将 Amazon Redshift 数据类型映射到临时服务数据类型。

BOOLEAN -> 字符串

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