cassandra に約 5,000 万行 (それぞれ ~ 30 列) を挿入したいのですが、現在ノードは 1 つしかありません。
別のデータ ソースからデータをクエリして、テーブル オブジェクトに格納しています。各行を個別に解析してから、それをミューテーターに追加します。現在、一度に 100 行を挿入していますが、100 万行を挿入するには 40 分かかります。このプロセスをスピードアップするにはどうすればよいですか? ( client.batch_mutate() も試しましたが、ブロックサイズ2の数千回の挿入後に接続エラーがリセットされたようです)。
調べてみると、マルチスレッドが役立つことがわかりました。しかし、私は例を見つけることができませんでした.誰かが私をリンクできますか? ありがとうございました !!
私の現在のコード:
List<String> colNames = new ArrayList<String>();
List<String> colValues = new ArrayList<String>();
SomeTable result = Query(...); // this contains my result set of 1M rows initially
for (Iterator itr = result.getRecordIterator(); itr.hasNext();) {
String colName =.....
String colValue = .....
int colCount = colNames.size(); // 100 * 30
for (int i = 0; i < colCount; i++) {
//add row keys and columns to mutator
mutator.addInsertion(String.valueOf(rowCounter), "data", HFactory.createStringColumn(colNames.get(i), colValues.get(i)));
}
rowCounter++;
//insert rows of block size 100
if (rowCounter % 100==0) {
mutator.execute();
//clear data
colNames = new ArrayList<String>();
colValues = new ArrayList<String>();
mutator = HFactory.createMutator(keyspace, stringSerializer);
}
}