次の方法で共有


Azure Data Factory または Synapse Analytics を使用して Cassandra からデータをコピーする

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

Microsoft Fabric の Data Factory (企業向けのオールインワン分析ソリューション) を試してみてください。 Microsoft Fabric では、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法については、こちらを参照してください。

この記事では、Azure Data Factory または Synapse Analytics パイプラインでコピー アクティビティを使用して、Cassandra データベースからデータをコピーする方法について説明します。 この記事は、コピー アクティビティの概要を示しているコピー アクティビティの概要に関する記事に基づいています。

重要

Cassandra コネクタ バージョン 1.0 は 削除段階にありますCassandra コネクタをバージョン 1.0 から 2.0 にアップグレードすることをお勧めします。

サポートされる機能

この Cassandra コネクタでは、次の機能がサポートされます。

サポートされる機能 IR
Copy アクティビティ (ソース/-) ① ②
Lookup アクティビティ ① ②

① Azure 統合ランタイム ② セルフホステッド統合ランタイム

ソースおよびシンクとしてサポートされているデータ ストアの一覧については、「サポートされているデータ ストア」の表を参照してください。

具体的には、この Cassandra コネクタは以下をサポートします。

  • Cassandra バージョン 3.x.x および 4.x.x (バージョン 2.0 の場合)。
  • バージョン 1.0 用の Cassandra バージョン 2.x および 3.x
  • 基本または匿名認証を使用したデータのコピー。

Note

セルフホステッド統合ランタイムでアクティビティを実行する場合、IR バージョン 3.7 以降で Cassandra 3.x がサポートされています。

前提条件

データ ストアがオンプレミス ネットワーク、Azure 仮想ネットワーク、または Amazon Virtual Private Cloud 内にある場合は、それに接続するようセルフホステッド統合ランタイムを構成する必要があります。

データ ストアがマネージド クラウド データ サービスである場合は、Azure Integration Runtime を使用できます。 ファイアウォール規則で承認されている IP にアクセスが制限されている場合は、Azure Integration Runtime の IP を許可リストに追加できます。

また、Azure Data Factory のマネージド仮想ネットワーク統合ランタイム機能を使用すれば、セルフホステッド統合ランタイムをインストールして構成しなくても、オンプレミス ネットワークにアクセスすることができます。

Data Factory によってサポートされるネットワーク セキュリティ メカニズムやオプションの詳細については、「データ アクセス戦略」を参照してください。

統合ランタイムには Cassandra ドライバーが組み込まれているため、Cassandra をコピー元またはコピー先としてデータをコピーするときにドライバーを手動でインストールする必要はありません。

作業の開始

パイプラインでコピー アクティビティを実行するには、次のいずれかのツールまたは SDK を使用できます。

UI を使用して Cassandra のリンク サービスを作成する

次の手順を使用して、Azure portal UI で Cassandra のリンク サービスを作成します。

  1. Azure Data Factory または Synapse ワークスペースの [管理] タブに移動し、[リンク サービス] を選択して、[新規] をクリックします。

    Azure Data Factory の UI を使用した新しいリンク サービスの作成を示すスクリーンショット。

  2. Cassandra を検索し、Cassandra コネクタを選択します。

    Cassandra コネクタのスクリーンショット。

  3. サービスの詳細を構成し、接続をテストして、新しいリンク サービスを作成します。

    Cassandra のリンク サービスの構成のスクリーンショット。

コネクタの構成の詳細

次のセクションでは、Cassandra コネクタに固有の Data Factory エンティティの定義に使用されるプロパティについて詳しく説明します。

リンクされたサービスのプロパティ

Cassandra のリンクされたサービスでは、次のプロパティがサポートされます。

プロパティ 説明 必須
type プロパティは Cassandra に設定する必要があります。 はい
バージョン 指定するバージョン。 はい (バージョン 2.0 の場合)。
ホスティング Cassandra サーバーの 1 つまたは複数の IP アドレスかホスト名。
IP アドレスまたはホスト名のコンマ区切りのリストを指定して、すべてのサーバーに同時に接続します。
はい
ポート Cassandra サーバーがクライアント接続のリッスンに使用する TCP ポート。 いいえ (既定値は 9042)
認証タイプ Cassandra データベースへの接続に使用される認証の種類です。
使用できる値は Basic および Anonymous です。
はい
ユーザー名 ユーザー アカウントのユーザー名を指定します。 はい (authenticationType が Basic に設定されている場合)。
パスワード ユーザー アカウントのパスワードを指定します。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します。 はい (authenticationType が Basic に設定されている場合)。
connectVia (接続ビア) データ ストアに接続するために使用される統合ランタイム。 詳細については、「前提条件」セクションを参照してください。 指定されていない場合は、既定の Azure Integration Runtime が使用されます。 いいえ

Note

現在、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 データベースのkeyspace またはスキーマの名前。 はい ("CassandraSource" の "クエリ" が指定されている場合)。
テーブル名 Cassandra データベースのテーブル名。 はい ("CassandraSource" の "クエリ" が指定されている場合)。

例:

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

コピー アクティビティのプロパティ

アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。 このセクションでは、Cassandra ソースでサポートされるプロパティの一覧を示します。

ソースとしての Cassandra

バージョン 2.0 を使用して Cassandra からデータをコピーする場合は、コピー アクティビティのソースの種類を CassandraSource に設定します。 コピー アクティビティの source セクションでは、次のプロパティがサポートされます。

プロパティ 説明 必須
コピー アクティビティのソースの type プロパティを CassandraSource に設定する必要があります。 はい
クエリ カスタム クエリを使用してデータを読み取ります。 CQL クエリについては、 CQL リファレンスを参照してください いいえ (データセットの "tableName" と "keyspace" が指定されている場合)。
一貫性レベル 一貫性レベルは、データがクライアント アプリケーションに返される前に、読み取り要求に応答する必要があるレプリカの数を指定します。 Cassandra は読み取り要求を満たすために、データの指定された数のレプリカを確認します。 詳細については、「 Configuring data consistency (データ整合性の構成) 」をご覧ください。

使用可能な値は、ONETWOTHREEQUORUMALLLOCAL_QUORUMEACH_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 に設定する必要があります。 はい
クエリ カスタム クエリを使用してデータを読み取ります。 SQL-92 クエリまたはCQL クエリ。 「 CQL reference (CQL リファレンス)」をご覧ください。

SQL クエリを使用する場合は、クエリを実行するテーブルを表す keyspace name.table name を指定します。
いいえ (データセットの "tableName" と "keyspace" が指定されている場合)。
一貫性レベル 一貫性レベルは、データがクライアント アプリケーションに返される前に、読み取り要求に応答する必要があるレプリカの数を指定します。 Cassandra は読み取り要求を満たすために、データの指定された数のレプリカを確認します。 詳細については、「 Configuring data consistency (データ整合性の構成) 」をご覧ください。

使用可能な値は、ONETWOTHREEQUORUMALLLOCAL_QUORUMEACH_QUORUM、および LOCAL_ONE です。
いいえ (既定値は ONE)

Cassandra のデータ型マッピング

Cassandra からデータをコピーするとき、Cassandra のデータ型からサービス内で内部的に使用される中間データ型への、以下のマッピングが使用されます。 コピー アクティビティでソースのスキーマとデータ型がシンクにマッピングされるしくみについては、スキーマとデータ型のマッピングに関する記事を参照してください。

Cassandra のデータ型 中間サービスのデータ型 (バージョン 2.0 の場合) 中間サービスのデータ型 (バージョン 1.0 の場合)
ASCII
bigint Int64 Int64
BLOB Byte[] Byte[]
ブーリアン ブール値 ブール値
日付 日付と時間 日付と時間
DECIMAL Decimal Decimal
DOUBLE Double Double
FLOAT シングル シングル
INET
INT Int32 Int32
SMALLINT Short Int16
[TEXT]
timestamp 日付と時間 日付と時間
TIMEUUID Guid Guid
タイニーイント (TINYINT) SByte Int16
UUID(ユニバーサリー・ユニーク・アイデンティファイア) Guid Guid
VARCHAR
VARINT Decimal Decimal

Note

バージョン 1.0 のコレクション型 (マップ、セット、リストなど) については、「バージョン 1.0 を使用する場合の仮想テーブルを使用した Cassandra コレクションの種類の操作 」セクションを参照してください。

ユーザー定義型はサポートされていません。

バイナリ列と文字列の列の長さは 4000 バイト以内である必要があります。

バージョン 2.0 を使用するときにコレクションを操作する

バージョン 2.0 を使用して Cassandra データベースからデータをコピーする場合、コレクション型の仮想テーブルは作成されません。 ソース テーブルは、元の型の JSON 形式でシンクにコピーできます。

たとえば、次の "ExampleTable" は、整数の主キー列 ("pk_int" という名前)、テキスト列 (値という名前)、リスト列、 マップ列、 およびセット列 ("StringSet" という名前) で構成された、Cassandra データベース テーブルです。

pk_int 一覧 マップ StringSet
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 一覧 マップ StringSet
1 "サンプル値 1" ["1", "2", "3"] {"S1": "a", "S2": "b"} ["A"、"B"、"C"]
3 "サンプル値 3" ["100", "101", "102", "105"] {"S1": "t"} ["A", "E"]

バージョン 1.0 を使用する場合は、仮想テーブルを使用してコレクションを操作する

このサービスでは、組み込みの ODBC ドライバーを使用して、Cassandra データベースに接続し、そこからデータをコピーします。 マップ、セット、およびリストを含むコレクションの種類については、ODBC ドライバーが、対応する仮想テーブルへのデータの再正規化を行います。 具体的には、テーブルにコレクション列が含まれている場合に、ドライバーが次の仮想テーブルを生成します。

  • 実テーブルと同じデータ (コレクション列を除く) を含む ベース テーブル。 ベース テーブルには、それが表す実テーブルと同じ名前が使用されます。
  • 入れ子になったデータを展開する、各コレクション列の 仮想テーブル 。 コレクションを表す仮想テーブルには、実テーブルの名前、区切り文字の "vt"、および列の名前を使用して名前が付けられます。

仮想テーブルが実テーブルのデータを参照することで、ドライバーは非正規化データにアクセスできるようになります。 詳細については、「例」セクションを参照してください。 仮想テーブルのクエリや結合により、Cassandra コレクションの内容にアクセスできます。

たとえば、次の "ExampleTable" は、整数の主キー列 ("pk_int" という名前)、テキスト列 (値という名前)、リスト列、 マップ列、 およびセット列 ("StringSet" という名前) で構成された、Cassandra データベース テーブルです。

pk_int 一覧 マップ 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
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 アクティビティに関するページを参照してください。

Cassandra コネクタをアップグレードする

Cassandra コネクタのアップグレードに役立つ手順を次に示します。

  1. [ リンクされたサービスの編集] ページで、バージョン 2.0 を選択し、リンクされたサービスのプロパティを参照して リンクされたサービスを構成します。

  2. バージョン 2.0 では、コピー アクティビティ ソースの query では、SQL-92 クエリではなく CQL クエリのみがサポートされています。 詳細については、 ソースとしての Cassandra を参照してください。

  3. バージョン 2.0 のデータ型マッピングは、バージョン 1.0 の場合とは異なります。 最新のデータ型マッピングについては、 Cassandra のデータ型マッピングに関するページを参照してください。

Cassandra バージョン 2.0 とバージョン 1.0 の違い

Cassandra コネクタ バージョン 2.0 は新しい機能を提供し、バージョン 1.0 のほとんどの機能と互換性があります。 次の表は、バージョン 2.0 とバージョン 1.0 の機能の違いを示しています。

バージョン 2.0 バージョン 1.0
CQL クエリをサポートします。 SQL-92 クエリまたは CQL クエリをサポートします。
データセットで個別に keyspacetableName を指定できます。 データセットに手動でテーブル名を入力するを選択すると、 keyspace の編集がサポートされます。
コレクション型の仮想テーブルは作成されません。 詳細については、「 バージョン 2.0 を使用する場合のコレクションの操作」を参照してください。 コレクション型の仮想テーブルが作成されます。 詳細については、「 バージョン 1.0 の使用時に仮想テーブルを使用して Cassandra コレクションの種類を操作する」を参照してください。
Cassandra データ型から中間サービス データ型への次のマッピングが使用されます。

SMALLINT -> Short
TINYINT -> SByte
Cassandra データ型から中間サービス データ型への次のマッピングが使用されます。

SMALLINT -> Int16
TINYINT -> Int16

Copy アクティビティでソースおよびシンクとしてサポートされるデータ ストアの一覧については、サポートされるデータ ストアに関するセクションを参照してください。