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

适用于: Azure 数据工厂

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

支持的功能

以下活动支持此 Amazon Redshift 连接器:

可以将数据从 Amazon Redshift 复制到任何支持的接收器数据存储。 有关复制活动支持作为源/接收器的数据存储列表,请参阅支持的数据存储表。

具体而言,通过使用查询或内置 Redshift UNLOAD 支持,此 Amazon Redshift 连接器支持从 Redshift 检索数据。

提示

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

先决条件

入门

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

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

链接服务属性

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

属性 说明 必需
type type 属性必须设置为:AmazonRedshift
server Amazon Redshift 服务器的 IP 地址或主机名。
port Amazon Redshift 服务器用于侦听客户端连接的 TCP 端口数。 否,默认值为 5439
database Amazon Redshift 数据库名称。
username 有权访问数据库的用户的名称。
password 用户帐户密码。 将此字段标记为 SecureString 以安全地将其存储在数据工厂中或引用存储在 Azure Key Vault 中的机密
connectVia 用于连接到数据存储的集成运行时。 如果数据存储位于专用网络,则可以使用 Azure Integration Runtime 或自承载集成运行时。 如果未指定,则使用默认 Azure Integration Runtime。

示例:

{
    "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 数据集的 type 属性必须设置为:AmazonRedshiftTable
架构 架构的名称。 否(如果指定了活动源中的“query”)
表的名称。 否(如果指定了活动源中的“query”)
tableName 具有架构的表的名称。 支持此属性是为了向后兼容。 对于新的工作负荷,请使用 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 部分支持以下属性:

属性 说明 必需
type 复制活动 source 的 type 属性必须设置为:AmazonRedshiftSource
查询 使用自定义查询读取数据。 例如:select * from MyTable。 否(如果指定了数据集中的“tableName”)
redshiftUnloadSettings 使用 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 数据类型映射到 Azure 数据工厂临时数据类型。 若要了解复制活动如何将源架构和数据类型映射到接收器,请参阅架构和数据类型映射

Amazon Redshift 数据类型 数据工厂临时数据类型
BIGINT Int64
BOOLEAN String
CHAR String
DATE DateTime
DECIMAL 小数
DOUBLE PRECISION Double
INTEGER Int32
real Single
SMALLINT Int16
TEXT String
TIMESTAMP DateTime
VARCHAR String

查找活动属性

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

后续步骤

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