适用于:Azure 数据工厂
Azure Synapse Analytics
本文概述如何使用 Azure 数据工厂或 Synapse Analytics 管道中的复制活动从 Cassandra 数据库复制数据。 它是在复制活动概述一文的基础上扩展,该文章提供了复制活动的一般概述。
此 Cassandra 连接器支持以下功能:
① Azure 集成运行时 ② 自承载集成运行时
如需可以用作源/接收器的数据存储的列表,请参阅支持的数据存储表。
具体而言,此 Cassandra 连接器支持:
- Cassandra 版本 3.x.x 和 4.x.x(针对版本 2.0)(预览版)。
- Cassandra 版本 2.x 和 3.x(针对版本 1.0)。
- 使用基本或匿名身份验证复制数据。
备注
对于自承载集成运行时上运行的活动,从 IR 版本 3.7 以及更高版本开始,Cassandra 3.x 受支持。
如果数据存储位于本地网络、Azure 虚拟网络或 Amazon Virtual Private Cloud 内部,则需要配置自承载集成运行时才能连接到该数据存储。
如果数据存储是托管的云数据服务,则可以使用 Azure Integration Runtime。 如果访问范围限制为防火墙规则中允许的 IP,你可以选择将 Azure Integration Runtime IP 添加到允许列表。
此外,还可以使用 Azure 数据工厂中的托管虚拟网络集成运行时功能访问本地网络,而无需安装和配置自承载集成运行时。
要详细了解网络安全机制和数据工厂支持的选项,请参阅数据访问策略。
集成运行时提供内置 Cassandra 驱动程序,因此从/向 Cassandra 复制数据时,无需手动安装任何驱动程序。
若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:
使用以下步骤在 Azure 门户 UI 中创建一个到 Cassandra 的链接服务。
浏览到 Azure 数据工厂或 Synapse 工作区中的“管理”选项卡并选择“链接服务”,然后单击“新建”:
搜索 Cassandra 并选择 Cassandra 连接器。
配置服务详细信息、测试连接并创建新的链接服务。
对于特定于 Cassandra 连接器的数据工厂实体,以下部分提供有关用于定义这些实体的属性的详细信息。
Cassandra 链接服务支持以下属性:
地产 | 描述 | 必需 |
---|---|---|
类型 | type 属性必须设置为:Cassandra | 是 |
version | 指定的版本。 该值为 2.0 。 |
对于版本 2.0(预览版)为必需,版本 1.0 不支持。 |
host | Cassandra 服务器的一个或多个 IP 地址或主机名。 指定以逗号分隔的 IP 地址或主机名列表,以同时连接到所有服务器。 |
是 |
港口 | Cassandra 服务器用来侦听客户端连接的 TCP 端口。 | 否(默认值为 9042) |
认证类型 | 用于连接 Cassandra 数据库的身份验证类型。 允许值包括:基本和匿名 。 |
是 |
用户名 | 为用户帐户指定用户名。 | 是(如果 authenticationType 设置为 Basic)。 |
密码 | 指定用户帐户的密码。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure Key Vault 中的机密。 | 是(如果 authenticationType 设置为 Basic)。 |
connectVia | 用于连接到数据存储的集成运行时。 在先决条件部分了解更多信息。 如果未指定,则使用默认 Azure Integration Runtime。 | 否 |
备注
当前不支持使用 TLS 连接到 Cassandra。
示例:版本 2.0(预览版)
{
"name": "CassandraLinkedService",
"properties": {
"type": "Cassandra",
"version": "2.0",
"typeProperties": {
"host": "<host>",
"authenticationType": "Basic",
"username": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
示例:版本 1.0
{
"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 属性必须设置为: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 源支持的属性列表。
如果使用版本 2.0(预览版)从 Cassandra 复制数据,请将复制活动中的源类型设置为 CassandraSource。 复制活动source部分支持以下属性:
财产 | 描述 | 必需 |
---|---|---|
类型 | 复制活动的源的类型属性必须设置为:CassandraSource | 是 |
query | 使用自定义查询读取数据。 CQL 查询,请参阅 CQL 参考。 | 否(如果数据集中指定了“tableName”和“keyspace”)。 |
consistencyLevel | 一致性级别指定在将数据返回到客户端应用程序之前必须响应读取请求的副本的数量。 Cassandra 会检查指定数量的副本,以便数据能够满足读取请求。 有关详细信息,请参阅 Configuring data consistency(配置数据一致性)。 允许值包括:ONE、TWO、THREE、QUORUM、ALL、LOCAL_QUORUM、EACH_QUORUM 和 LOCAL_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",
"consistencyLevel": "one"
},
"sink": {
"type": "<sink type>"
}
}
}
]
如果使用版本 1.0 从 Cassandra 复制数据,请将复制活动中的源类型设置为 CassandraSource。 复制活动source部分支持以下属性:
属性 | 描述 | 必需 |
---|---|---|
类型 | 复制活动源的 type 属性必须设置为:CassandraSource | 是 |
query | 使用自定义查询读取数据。 SQL-92 查询或 CQL 查询。 请查看 CQL 参考。 使用 SQL 查询时,请指定 keyspace name.table name 来表示要查询的表 。 |
否(如果数据集中指定了 "tableName" 和 "keyspace")。 |
一致性级别 | 一致性级别指定在将数据返回到客户端应用程序之前必须响应读取请求的副本的数量。 Cassandra 会检查指定数量的副本,以确保数据满足读取请求的要求。 有关详细信息,请参阅 Configuring data consistency(配置数据一致性)。 允许值包括:ONE、TWO、THREE、QUORUM、ALL、LOCAL_QUORUM、EACH_QUORUM 和 LOCAL_ONE。 |
否(默认值为 ONE ) |
从 Cassandra 复制数据时,以下映射用于从 Cassandra 数据类型映射到在服务内部使用的临时数据类型。 若要了解复制活动如何将源架构和数据类型映射到接收器,请参阅架构和数据类型映射。
Cassandra 数据类型 | 临时服务数据类型(适用于版本 2.0(预览版)) | 临时服务数据类型(适用于版本 1.0) |
---|---|---|
ASCII | 字符串 | 字符串 |
BIGINT | Int64 | Int64 |
BLOB | Byte[] | Byte[] |
BOOLEAN | 布尔 | 布尔 |
日期 | 日期/时间 | 日期/时间 |
DECIMAL | 十进制 | 十进制 |
DOUBLE | 双精度 | 双精度 |
FLOAT | 单精度 | 单身 |
INET | 字符串 | 字符串 |
INT | Int32 | Int32 |
SMALLINT | Short | Int16 |
TEXT | 字符串 | 字符串 |
TIMESTAMP | 日期/时间 | 日期/时间 |
TIMEUUID | Guid | Guid |
TINYINT | SByte | Int16 |
UUID(通用唯一识别码) | Guid | Guid |
VARCHAR | 字符串 | 字符串 |
VARINT | 十进制 | 十进制 |
备注
对于版本 1.0 下的集合类型(映射、集、列表等),请参阅使用版本 1.0 时通过虚拟表使用 Cassandra 集合类型部分。
不支持用户定义的类型。
二进制列和字符串列的长度不能大于 4000。
使用版本 2.0(预览版)从 Cassandra 数据库复制数据时,不会创建集合类型的虚拟表。 可以将源表以 JSON 格式以原始类型复制到接收器。
例如,下面的“ExampleTable”是一个 Cassandra 数据库表,其中包含名为“pk_int”的整数主键列、文本列命名值、列表列、映射列和名为“StringSet”的集列。
pk_int | 价值 | 列表 | 映射 | 字符串集 |
---|---|---|---|---|
1 | “示例值 1” | ["1", "2", "3"] | {"S1": "a", "S2": "b"} | {"A", "B", "C"} |
3 | “示例值 3” | ["100", "101", "102", "105"] | {"S1": "t"} | {"A", "E"} |
可以直接从源表读取数据,列值以 JSON 格式保留其原始类型,如下表所示:
pk_int | 价值 | 列表 | 地图 | 字符串集合 |
---|---|---|---|---|
1 | “示例值 1” | ["1", "2", "3"] | {"S1": "a", "S2": "b"} | [“A”、“B”、“C”] |
3 | “示例值 3” | ["100", "101", "102", "105"] | {"S1": "t"} | ["A", "E"] |
服务使用内置的 ODBC 驱动程序连接到 Cassandra 数据库,并从中复制数据。 对于包括映射、集和列表在内的集合类型,该驱动程序会将数据重新规范化到相应的虚拟表中。 具体而言,如果表中包含任何集合列,则该驱动程序会生成以下虚拟表:
- 基表,其中包含与实际表相同的数据(集合列除外) 。 基表使用与其所表示的实际表相同的名称。
- 对于每个集合列都会生成一个虚拟表,这会扩展嵌套数据。 使用实际表名称、分隔符“vt”和列名称命名表示集合的虚拟表。
虚拟表引用实际表中的数据,以使驱动程序能访问非规范化的数据。 有关详细信息,请参阅示例部分。 通过查询和联接虚拟表,可访问 Cassandra 集合的内容。
例如,下面的“ExampleTable”是一个 Cassandra 数据库表,其中包含名为“pk_int”的整数主键列、文本列命名值、列表列、映射列和名为“StringSet”的集列。
pk_int | 价值 | 列表 | 地图 | 字符串集 |
---|---|---|---|---|
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 | 值 |
---|---|
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 活动。
下面是帮助你升级 Cassandra 连接器的步骤:
在 “编辑链接服务 ”页中,选择版本 2.0(预览版),并通过引用 链接服务属性来配置链接服务。
在版本 2.0(预览版)中,
query
复制活动源仅支持 CQL 查询,不支持 SQL-92 查询。 有关详细信息,请参阅 Cassandra 作为源。版本 2.0(预览版)的数据类型映射与版本 1.0 的数据类型映射不同。 若要了解最新的数据类型映射,请参阅 Cassandra 的数据类型映射。
Cassandra 连接器版本 2.0(预览版)提供新功能,并与版本 1.0 的大多数功能兼容。 下表显示了版本 2.0(预览版)和版本 1.0 之间的功能差异。
版本 2.0(预览版) | 版本 1.0 |
---|---|
支持 CQL 查询。 | 支持 SQL-92 查询或 CQL 查询。 |
支持在数据集中分别指定keyspace 和tableName 。 |
在数据集中选择手动输入表名时,支持编辑keyspace 。 |
没有为集合类型创建虚拟表。 有关详细信息,请参阅使用版本 2.0 时处理集合(预览版)。 | 为集合类型创建虚拟表。 有关详细信息,请参阅 在使用版本 1.0 时使用虚拟表处理 Cassandra 集合类型。 |
以下映射用于从 Cassandra 数据类型到临时服务数据类型。 SMALLINT -> Short TINYINT -> SByte |
以下映射用于从 Cassandra 数据类型到临时服务数据类型。 SMALLINT -> Int16 TINYINT -> Int16 |
有关复制活动支持作为源和接收器的数据存储的列表,请参阅受支持的数据存储。