ステップ 2: データのアップロードを成功させるためにソースデータを準備する - Amazon Keyspaces (Apache Cassandra 向け)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ステップ 2: データのアップロードを成功させるためにソースデータを準備する

効率的な転送のためのソースデータの準備には、2 つのステップがあります。まず、データをランダム化します。2 番目のステップでは、データを分析して適切なcqlshパラメータ値と必要なテーブル設定を決定し、データのアップロードが成功することを確認します。

データをランダム化する

cqlsh COPY FROM コマンドは、CSVファイルに表示されるのと同じ順序でデータを読み取りおよび書き込みます。cqlsh COPY TO コマンドを使用してソースファイルを作成する場合、データはキーソートされた順序で に書き込まれますCSV。内部的には、Amazon Keyspaces でパーティションキーを使用してデータが分割されます。Amazon Keyspaces には、同一のパーティションキーに対するロードバランスリクエストに役立つロジックが内蔵されていますが、順序をランダム化すると、データのロードが高速かつ効率的になります。これは、Amazon Keyspaces で異なるパーティションにデータが書き込まれたときに発生する組み込みのロードバランシングを利用できるためです。

パーティション間で書き込みを均等に分散させるには、ソースファイル内のデータをランダム化する必要があります。アプリケーションを書き込んでこれを実行することができます。また、Shuf などのオープンソースツールを使用することもできます。Shuf は Linux ディストリビューション、macOS (homebrew に coreutils をインストール)、Windows (Linux 用 Windows サブシステム (WSL) を使用) で無料で利用できます。このステップで列名を含むヘッダー行がシャッフルされないようにするには、追加のステップが 1 つ必要です。

ヘッダーを維持した状態でソースファイルをランダム化するには、次のコードを入力します。

tail -n +2 keyspaces_sample_table.csv | shuf -o keyspace.table.csv && (head -1 keyspaces_sample_table.csv && cat keyspace.table.csv ) > keyspace.table.csv1 && mv keyspace.table.csv1 keyspace.table.csv

Shuf は、 という新しいCSVファイルにデータを書き換えますkeyspace.table.csv。これで、不要になった keyspaces_sample_table.csv ファイルを削除できます。

データを分析する

データを分析して、平均行サイズと最大行サイズを決定します。

この作業を行う理由は次のとおりです。

  • 転送されるデータの総量を見積もる場合に、平均行サイズが役立ちます。

  • データのアップロードに必要な書き込みキャパシティをプロビジョニングする際には、平均行サイズが必要になります。

  • 各行のサイズが 1 MB 未満 (Amazon Keyspaces の行サイズの上限) であることを確認できます。

注記

このクォータは、パーティションサイズではなく、行サイズを指します。Apache Cassandra のパーティションとは異なり、Amazon Keyspaces のパーティションのサイズは事実上無制限です。パーティションキーとクラスタリング列には、メタデータ用の追加のストレージが必要です。このストレージは行の raw サイズに追加する必要があります。詳細については、「Amazon Keyspaces での行サイズの見積もり」を参照してください。

次のコードではAWK、 を使用してCSVファイルを分析し、平均行サイズと最大行サイズを出力します。

awk -F, 'BEGIN {samp=10000;max=-1;}{if(NR>1){len=length($0);t+=len;avg=t/NR;max=(len>max ? len : max)}}NR==samp{exit}END{printf("{lines: %d, average: %d bytes, max: %d bytes}\n",NR,avg,max);}' keyspace.table.csv

このコードを実行すると、次の出力が表示されます。

using 10,000 samples: {lines: 10000, avg: 123 bytes, max: 225 bytes}

このチュートリアルの次のステップの平均行サイズを使用して、テーブルの書き込みキャパシティをプロビジョニングします。