使用 Azure 数据工厂从 Cassandra 复制数据

适用于: Azure 数据工厂

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

支持的功能

以下活动支持此 Cassandra 连接器:

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

具体而言,此 Cassandra 连接器支持:

  • Cassandra 2.X 版和 3.x 版 。
  • 使用基本 或匿名 身份验证复制数据。

备注

对于自承载集成运行时上运行的活动,从 IR 版本 3.7 以及更高版本开始,Cassandra 3.x 受支持。

先决条件

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

如果数据存储是托管的云数据服务,则可以使用 Azure Integration Runtime。 如果访问仅限于防火墙规则中批准的 IP,则可以将 Azure Integration Runtime IP 添加到允许列表。

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

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

集成运行时提供内置 Cassandra 驱动程序,因此从/向 Cassandra 复制数据时,无需手动安装任何驱动程序。

入门

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

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

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

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

    屏幕截图,显示如何使用 Azure 数据工厂 UI 创建新的链接服务。

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

    Cassandra 连接器的屏幕截图。

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

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

连接器配置详细信息

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

链接服务属性

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

属性 说明 必需
type type 属性必须设置为:Cassandra
host Cassandra 服务器的一个或多个 IP 地址或主机名。
指定以逗号分隔的 IP 地址或主机名列表,以同时连接到所有服务器。
port Cassandra 服务器用来侦听客户端连接的 TCP 端口。 否(默认值为 9042)
authenticationType 用于连接 Cassandra 数据库的身份验证类型。
允许值包括:基本和匿名 。
username 为用户帐户指定用户名。 是(如果 authenticationType 设置为 Basic)。
password 指定用户帐户的密码。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure Key Vault 中的机密 是(如果 authenticationType 设置为 Basic)。
connectVia 用于连接到数据存储的集成运行时。 在先决条件部分了解更多信息。 如果未指定,则使用默认 Azure Integration Runtime。

备注

当前不支持使用 TLS 连接到 Cassandra。

示例:

{
    "name": "CassandraLinkedService",
    "properties": {
        "type": "Cassandra",
        "typeProperties": {
            "host": "<host>",
            "authenticationType": "Basic",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

数据集属性

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

要从 Cassandra 复制数据,请将数据集的 type 属性设置为“CassandraTable” 。 支持以下属性:

属性 说明 必需
type 数据集的 type 属性必须设置为:CassandraTable
keyspace Cassandra 数据库中密钥空间或架构的名称。 否(如果指定了“CassandraSource”的“query”)
tableName Cassandra 数据库中表的名称。 否(如果指定了“CassandraSource”的“query”)

示例:

{
    "name": "CassandraDataset",
    "properties": {
        "type": "CassandraTable",
        "typeProperties": {
            "keySpace": "<keyspace name>",
            "tableName": "<table name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Cassandra linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

复制活动属性

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

以 Cassandra 作为源

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

属性 说明 必需
type 复制活动 source 的 type 属性必须设置为:CassandraSource
查询 使用自定义查询读取数据。 SQL-92 查询或 CQL 查询。 请参阅 CQL reference(CQL 参考)。

使用 SQL 查询时,请指定 keyspace name.table name 来表示要查询的表 。
否(如果指定了数据集中的“tableName”和“keyspace”)。
consistencyLevel 一致性级别指定在将数据返回到客户端应用程序之前必须响应读取请求的副本的数量。 Cassandra 会检查指定数量的副本,以使数据满足读取请求。 有关详细信息,请参阅 Configuring data consistency(配置数据一致性)。

允许值包括:ONETWOTHREEQUORUMALLLOCAL_QUORUMEACH_QUORUMLOCAL_ONE
否(默认值为 ONE

示例:

"activities":[
    {
        "name": "CopyFromCassandra",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Cassandra input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "CassandraSource",
                "query": "select id, firstname, lastname from mykeyspace.mytable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Cassandra 的数据类型映射

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

Cassandra 数据类型 临时服务数据类型
ASCII String
BIGINT Int64
BLOB Byte[]
BOOLEAN 布尔
DECIMAL 小数
DOUBLE Double
FLOAT Single
INET String
INT Int32
TEXT String
TIMESTAMP DateTime
TIMEUUID Guid
UUID Guid
VARCHAR String
VARINT 小数

备注

对于集合类型(映射、集、列表等),请参阅通过虚拟表使用 Cassandra 集合类型部分。

不支持用户定义的类型。

二进制列和字符串列的长度不能大于 4000。

通过虚拟表使用集合

此服务使用内置的 ODBC 驱动程序连接到 Cassandra 数据库,并从中复制数据。 对于包括映射、集和列表在内的集合类型,该驱动程序会将数据重新规范化到相应的虚拟表中。 具体而言,如果表中包含任何集合列,则该驱动程序会生成以下虚拟表:

  • 基表,其中包含与实际表相同的数据(集合列除外) 。 基表使用与其所表示的实际表相同的名称。
  • 对于每个集合列都会生成一个虚拟表,这会扩展嵌套数据 。 使用实际表名称、分隔符“vt”和列名称命名表示集合的虚拟表。

虚拟表引用实际表中的数据,使驱动程序能够访问非规范化的数据。 有关详细信息,请参阅示例部分。 通过查询和联接虚拟表,可访问 Cassandra 集合的内容。

示例

例如,下面的“ExampleTable”是一个 Cassandra 数据库表,其中包含名为“pk_int”的整数主键列、文本列命名值、列表列、映射列和名为“StringSet”的集列。

pk_int Value 列出 映射 StringSet
1 “示例值 1” ["1", "2", "3"] {"S1": "a", "S2": "b"} {"A", "B", "C"}
3 “示例值 3” ["100", "101", "102", "105"] {"S1": "t"} {"A", "E"}

该驱动程序会生成多个虚拟表来表示此单个表。 虚拟表中的外键列会引用实际表中的主键列,并指示该虚拟表行对应哪一个实际表行。

第一个虚拟表是名为“ExampleTable”的基表,如下表所示:

pk_int Value
1 “示例值 1”
3 “示例值 3”

除了会在此表中被省略但在其他虚拟表中展开的集合外,该基表包含与原始数据库表相同的数据。

下表中显示的虚拟表会重新规范化列表、映射和 StringSet 列中的数据。 名称以“_index”或“_key”结尾的列指示数据在原始列表或映射中的位置。 名称以“_value”结尾的列包含从集合中展开的数据。

表“ExampleTable_vt_List”:

pk_int List_index List_value
1 0 1
1 1 2
1 2 3
3 0 100
3 1 101
3 2 102
3 3 103

表“ExampleTable_vt_Map”:

pk_int Map_key Map_value
1 S1 A
1 S2 b
3 S1 t

表“ExampleTable_vt_StringSet”:

pk_int StringSet_value
1 A
1 B
1 C
3 A
3 E

Lookup 活动属性

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

后续步骤

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