# Apache Spark BatchのtCassandraOutputプロパティ

これらのプロパティは、Spark Batchジョブのフレームワークで実行されているtCassandraOutputを設定するために使われます。

Spark BatchのtCassandraOutputコンポーネントは、データベースファミリーに属しています。

このフレームワークのコンポーネントは、すべてのサブスクリプションベースのビッグデータ対応のTalend製品およびTalend Data Fabricで利用できます。

このコンポーネントはSpark 4.0.xではサポートされていません。

## 基本設定

| [Properties] (プロパティ) | 説明 |
| --- | --- |
| [Property type] (プロパティタイプ) | [Built-in] (組み込み)と[Repository] (リポジトリー)のいずれかです。<br><br>[Built-In] (組み込み): 一元的に保存されるプロパティデータはありません。<br><br>[Repository] (リポジトリー): プロパティが保存されているリポジトリーファイルを選択します。 |
| [Sync columns] (カラムを同期) | ジョブで接続された前のコンポーネントからスキーマを取得するには、このボタンをクリックします。 |
| [Keyspace] | データの書き込み先にキースペースの名前を入力します。 |
| [Action on keyspace] (キースペースのアクション) | 使用するキースペースで実行する操作を選択します:<br><br><ul> <li> <p> <span>[None] (なし)</span>: 操作は行われません。</p> </li> <li> <p> <span>[Drop and create keyspace] (キースペースの削除と作成)</span>: キースペースを削除してから、再作成します。</p> </li> <li> <p> <span>[Create keyspace] (キースペースの作成)</span>: キースペースが存在しないため、作成します。</p> </li> <li> <p> <span>[Create keyspace if not exists] (キースペースが存在しない場合に作成)</span>: キースペースが存在しない場合は作成します。</p> </li> <li> <p> <span>[Drop keyspace if exists and create] (キースペースが存在する場合に削除して作成)</span>: キースペースが既に存在する場合は、削除されて再作成されます。</p> </li> </ul> |
| [Column family] (カラムファミリー) | データの書き込み先にキースペースの名前を入力します。 |
| [Action on column family] (カラムファミリーのアクション) | 使用するカラムファミリーで実行する操作を選択します:<br><br><ul> <li> <p> <span>[None] (なし)</span>: 操作は行われません。</p> </li> <li> <p> <span>[Create column family if not exists] (カラムファミリーが存在しない場合に作成)</span>: カラムファミリーが存在しない場合に作成します。</p> </li> <li> <p> <span>[Drop column family if exists and create] (カラムファミリーが存在する場合に削除と作成)</span>: カラムファミリーが既に存在している場合は削除され、再作成されます。</p> </li> <li> <p> <span>[Truncate column family] (カラムファミリーの切り捨て)</span>: カラムファミリーのすべてのデータが完全に削除されます。</p> </li> </ul><br><br>このリストは、[Action on data] (データでのアクション)ドロップダウンリストから、[Update] (アップデート)、[Upsert] (アップサート)、[Insert] (挿入)のいずれかが選択されている時のみ利用可能です。 |
| [Action on data] (データでのアクション) | 定義されたテーブルのデータでは、以下の操作を実行できます:<br><br><ul> <li> <p> <span>[Upsert] (アップサート)</span>: カラムまたは既存のカラムが存在しない場合は、カラムを挿入します。</p> <p>このアクションでは、スキーマで定義される列の名前に小文字を使用する必要がありますが、スキーマの<span>[DB column] (DBカラム)</span>カラムに配置した名前は、文字ケースも含めて、ターゲットテーブル内の対応するカラムと同じにする必要があります。</p> </li> <li> <p> <span>[Insert] (挿入)</span>: カラムが存在しない場合は、カラムを挿入します。このアクションは、既存のものもアップデートします。</p> </li> <li> <p> <span>[Update] (アップデート)</span>: 既存のカラムをアップデートするか、存在しないカラムを追加します。このアクションでは<em>[Counter] (カウンター)</em>Cassandraデータ型がサポートされていません。</p> </li> <li> <p> <span>[Delete] (削除)</span>: 入力フローに対応するカラムを削除します。</p> </li> </ul><br><br>詳細な操作は、[Advanced settings] (詳細設定)ビューを使用します。 |
| [Schema] (スキーマ)と[Edit schema] (スキーマを編集) | <ul> <li> <p>スキーマとは行の説明のことです。処理して次のコンポーネントに渡すフィールド(カラム)数を定義します。Sparkジョブを作成する場合、フィールドの命名時は予約語の<kbd>line</kbd>を避けます。</p> <p>スキーマを変更するには<span>[Edit schema] (スキーマを編集)</span>をクリックします。現在のスキーマが<span>リポジトリー</span>タイプの場合は、3つのオプションを利用できます。</p> <ul> <li> <p> <span>[View schema] (スキーマを表示)</span>: スキーマのみを表示する場合は、このオプションを選択します。</p> </li> <li> <p> <span>[Change to built-in property] (組み込みのプロパティに変更)</span>: ローカルで変更を行うためにスキーマを<span>組み込み</span>に変更する場合は、このオプションを選択します。</p> </li> <li> <p> <span>[Update repository connection] (リポジトリー接続をアップデート)</span>: リポジトリーに保存されているスキーマに変更を加え、変更後にそのコンテンツをすべてのジョブにプロパゲートするかどうかを決める場合は、このオプションを選択します。</p> <p>変更を現在のジョブにのみ反映する場合は、変更後、<span>[No] (いいえ)</span>を選択し、<span>[Repository Content] (リポジトリーコンテンツ)</span>ウィンドウで再びこのスキーマのメタデータを選択します。</p> </li> </ul> <p>このコンポーネントのスキーマは、<span>オブジェクト</span>タイプと<span>リスト</span>タイプに対応していません。</p> </li> <li> <p> <span>[Built-in] (組み込み)</span>: そのコンポーネントに対してのみスキーマを作成し、ローカルに保管します。</p> </li> <li> <p> <span>[Repository] (リポジトリー)</span>: スキーマは作成済みで、リポジトリーに保管されています。さまざまなプロジェクトやジョブデザインで再利用できます。</p> <p>再使用するスキーマに整数またはファンクションのデフォルト値が指定されている場合は、これらのデフォルト値を引用符で囲まないようにご注意ください。引用符で囲まれている場合は手動で削除します。</p> <p>詳細は、<a href="https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/retrieving-table-schemas?tocId=_C1~eFOlN~GM_JR2qkBYZg" target="_blank">テーブルスキーマを取得</a>をご覧ください。</p> </li> </ul> |

## 詳細設定

| [Properties] (プロパティ) | 説明 |
| --- | --- |
| 設定 | Cassandraにアップサートするデータでカスタマイズする必要があるCassandraのプロパティを追加します。<br><br><ul> <li> <p>たとえば、書き込みにおけるCassandraの一貫性レベルを定義する必要がある場合は、<span>[Property name] (プロパティ名)</span>カラムで<em>[output_consistency_level]</em>プロパティを選択し、<span>[Value] (値)</span>カラムに数値レベルの値を入力します。</p> </li> </ul><br><br>以下のリストは、入力できる数値と、その値で示される一貫性レベルを示しています:<br><br><ul> <li> <p>0: ANY、</p> </li> <li> <p>1: ONE、</p> </li> <li> <p>2: TWO、</p> </li> <li> <p>3: THREE、</p> </li> <li> <p>4: QUORUM、</p> </li> <li> <p>5: ALL、</p> </li> <li> <p>6: LOCAL_QUORUM、</p> </li> <li> <p>7: EACH_QUORUM、</p> </li> <li> <p>8: SERIAL、</p> </li> <li> <p>9: LOCAL_SERIAL、</p> </li> <li> <p>10: LOCAL_ONE</p> </li> </ul><br><br><br>各整合性ポリシーの詳細は、Cassandraに関するDatastaxのドキュメンテーションをご覧ください。<br><br>テーブルに行を追加する場合は、[Property name] (プロパティ名)カラムの新しい行をクリックして、 使用可能なプロパティの一覧を表示し、カスタマイズするプロパティを選択する必要があります。これらの各プロパティの詳細は、https://github.com/datastax/spark-cassandra-connector/Blob/master/doc/5\_saving.mdのリンクのチューニングセクションをご覧ください。 |
| [Use unlogged batch] (UNLOGGEDバッチを使用) | このチェックボックスをオンにすると、データをバッチ処理できますが、CassandraのUNLOGGEDアプローチが使用されます。このフィーチャーは[Insert] (挿入)、[Update] (アップデート)および[Delete] (削除)の3つの操作で利用できます。<br><br>次に、バッチモードの動作を設定する必要があります:<br><br><ul> <li> <p> <span>[Batch size] (バッチサイズ)</span>: 処理する各バッチの行数を入力します。 </p> </li> <li> <div> <span>[Group batch method] (グループバッチ方式)</span>: 行をグルーピングして一括処理する方法を選択します。<ol> <li> <p> <span>[Partition] (パーティション)</span>: 同じパーティションキーを共有する行をグルーピングします。</p> </li> <li> <p> <span>[Replica] (レプリカ)</span>: 同じレプリカに書き込まれる行をグルーピングします</p> </li> <li> <p> <span>[None] (なし)</span>: ランダムに行をグルーピングします。このオプションは、単一ノードのCassandraに適しています。</p> </li> </ol> </div> </li> <li> <p> <span>[Cache batch group] (キャッシュバッチグループ)</span>: このチェックボックスをオンにすると、グルーピングする前に行がメモリにロードされます。この方法では、行の順序でグルーピングが影響を受けることはありません。</p> <p>このチェックボックスをオフにしたままにすると、同じ条件を満たす連続した行のみがグルーピングされます。</p> </li> <li> <p> <span>[Async execute] (非同期実行)</span>: このチェックボックスをオンにすると、<span>tCassandraOutput</span>でバッチが並行して送信されます。選択を解除したままにすると、<span>tCassandraOutput</span>では、バッチの結果を待機してから、別のバッチをCassandraに送信します。</p> </li> <li> <p> <span>[Maximum number of batches executed in parallel] (並行して実行できるバッチの最大数)</span>: <span>[Async execute] (非同期実行)</span>を選択したら、Cassandraに並行して送信するバッチの数を入力します。</p> <p>この数値を負の数または0にすべきではなく、大きすぎる値も使用しないことをお勧めします。</p> </li> </ul><br><br>Cassandraでバッチを使用する理想的な状況には、少数のテーブルで挿入またはアップデートするデータを同期する場合などが挙げられます。<br><br>このUNLOGGEDアプローチでは、ジョブは、Cassandraのバッチログシステムにバッチを書き込まないため、この書き込みによって発生するパフォーマンスの問題を回避します。CassandraのBATCHステートメントおよびUNLOGGEDアプローチの詳細は、[バッチ](https://docs.datastax.com/en/dse/6.7/cql/cql/cql_reference/cql_commands/cqlBatch.html)をご覧ください。 |
| [Insert if not exists] (存在しない場合は挿入) | このチェックボックスをオンにすると、行が挿入されます。この行の挿入は、ターゲットテーブルに存在しない時のみ行われます。<br><br>このフィーチャーは[Insert] (挿入)操作でのみ利用できます。 |
| [Delete if exists] (存在する場合は削除) | このチェックボックスをオンにすると、受信フロー内の同じレコードを持つ行のみがターゲットテーブルから削除されます。<br><br>このフィーチャーは[Delete] (削除)操作でのみ利用できます。 |
| [Use TTL] (TTLを使用) | このチェックボックスをオンにすると、ターゲットテーブルにTTLデータが書き込まれます。表示されるカラムリストで、TTLカラムとして使用されるカラムを選択する必要があります。このカラムのデータベース型はIntにする必要があります。<br><br>このフィーチャーは[Insert] (挿入)操作および[Update] (アップデート)操作でのみ利用できます。 |
| [Use Timestamp] (タイムスタンプを使用) | このチェックボックスをオンにすると、ターゲットテーブルにタイムスタンプデータが書き込まれます。表示されるカラムリストで、タイムスタンプデータの保管に使用するカラムを選択する必要があります。このカラムのDBタイプは[BigInt]にする必要があります。<br><br>このフィーチャーは、[Insert] (挿入)、[Update] (アップデート)および[Delete] (削除)のアクションで利用可能です。 |
| [IF condition] (IF条件) | [Update] (アップデート)または[Delate] (削除)操作を実行するために満たす条件を追加します。この条件を使用すると、アップデートまたは削除するカラムについて正確な操作が可能になります。 |
| [Special assignment operation] (特別な割り当て操作) | このテーブルを完成して、[Update] (アップデート)操作をより具体的にするためのCassandraの高度なSETコマンドを構成します。たとえば、指定されたカラムの先頭または特定の位置にレコードを追加します。<br><br>このテーブルの[Update column] (カラムのアップデート)カラムで、アップデートされたカラムを選択し、[Operation] (操作)カラムから使用する操作を選択する必要があります。以下の操作を実行できます:<br><br><ul> <li> <p> <span>[Append] (後ろに追加)</span>: アップデートするカラムの末尾に受信レコードを追加します。処理できるCassandraのデータ型は、Counter、List、Set、Mapになります。</p> </li> <li> <p> <span>[Prepend] (前に追加)</span>: アップデートするカラムの先頭に受信レコードを追加します。処理できる唯一のCassandraのデータ型はListになります。</p> </li> <li> <p> <span>[Remove] (削除)</span>: 受信フローに同じレコードが存在する場合、ターゲットテーブルからレコードを削除します。処理できるCassandraのデータ型は、Counter、List、SetおよびMapになります。</p> </li> <li> <p> <span>[Assign based on position/key] (位置/キーに基づく割り当て)</span>: アップデートするカラムの特定の位置にレコードを追加します。処理できるCassandraのデータ型は、ListおよびMapになります。 </p> <p>この操作をオンにすると、<span>[Map key/list position] (キー/リスト位置のマッピング)</span>カラムが編集可能になります。このカラムから参照に使用するカラムを選択し、アップデートする位置を検索する必要があります。</p> </li> </ul><br><br><br>これらの操作の詳細は、Datastaxの関連ドキュメンテーション(http://docs.datastax.com/en/cql/3.1/cql/cql\_reference/update\_r.html?scroll=reference\_ds\_g4h\_qzq\_xj\_\_description\_unique\_34)をご覧ください。 |
| [Row key in the List type] (リストタイプの行キー) | CassandraのWHERE句を構成するために使用するカラムを選択し、[Update] (アップデート)または[Delete] (削除)操作を実行します。このテーブルで使用されるカラムは、Cassandraテーブルのプライマリキーカラムのセットから選ぶ必要があります。 |
| [Delete collection column based on postion/key] (位置/キーに基づいてコレクションカラムを削除) | 削除する特定の行を参照する際に使用するカラムを選択します。<br><br>このフィーチャーは[Delete] (削除)操作でのみ利用できます。 |

## 使用方法

| 使用方法のガイダンス | 説明 |
| --- | --- |
| **使用ルール** | このコンポーネントは終了コンポーネントとして使用され、入力リンクを必要とします。<br><br>このコンポーネントでは、同じジョブに存在するtCassandraConfigurationコンポーネントを1つのみ使用して、Cassandraに接続する必要があります。同じジョブに複数のtCassandraConfigurationコンポーネントが存在すると、ジョブの実行が失敗します。<br><br>このコンポーネントは、所属するSpark Batchコンポーネントのパレットと共に、Spark Batchジョブを作成している場合にだけ表示されます。<br><br>特に明記していない限り、このドキュメンテーションのシナリオでは、標準ジョブ、つまり従来の Talend Data Integrationジョブだけを扱います。 |
| [Spark Connection] (Spark接続) | [Run] (実行)ビューの[Spark configuration] (Spark設定)タブで、ジョブ全体でのSparkクラスターへの接続を定義します。また、ジョブでは、依存jarファイルを実行することを想定しているため、Sparkがこれらのjarファイルにアクセスできるように、これらのファイルの転送先にするファイルシステム内のディレクトリーを指定する必要があります。<br><br><ul> <li> <div> <span>Yarnモード</span>(YarnクライアントまたはYarnクラスター):<ul> <li> <p>Google Dataprocを使用している場合、<span>[Spark configuration] (Spark設定)</span>タブの<span>[Google Storage staging bucket] (Google Storageステージングバケット)</span>フィールドにバケットを指定します。</p> </li> <li> <p>HDInsightを使用している場合、<span>[Spark configuration] (Spark設定)</span>タブの<span>[Windows Azure Storage configuration] (Windows Azure Storage設定)</span>エリアでジョブのデプロイメントに使用するブロブを指定します。</p> </li> <li>Altusを使用する場合は、<span>[Spark configuration] (Spark設定)</span>タブでジョブのデプロイにS3バケットまたはAzure Data Lake Storageを指定します。</li> <li> <p>オンプレミスのディストリビューションを使用する場合は、クラスターで使われているファイルシステムに対応する設定コンポーネントを使用します。一般的に、このシステムはHDFSになるため、<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/hdfs/thdfsconfiguration">tHDFSConfiguration</a>を使用します。</p> </li> </ul> </div> </li> <li> <p> <span>[Standalone mode] (スタンドアロンモード)</span>: クラスターで使われているファイルシステム(<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/hdfs/thdfsconfiguration-properties-for-apache-spark-batch">tHDFSConfiguration Apache Spark Batch</a>や<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/amazon-s3/ts3configuration-properties-for-apache-spark-batch">tS3Configuration Apache Spark Batch</a>など)に対応する設定コンポーネントを使用します。</p> <p>ジョブ内に設定コンポーネントがない状態でDatabricksを使用している場合、ビジネスデータはDBFS (Databricks Filesystem)に直接書き込まれます。</p> </li> </ul><br><br>この接続は、ジョブごとに有効になります。 |