私は Cassandra の初心者であり、迅速で小さなアドホックな仕事のために必要です。しかし、私は問題で膠着状態にあります。以下の CQL で作成された列ファミリーがあります。
CREATE TABLE ダミーファイルテスト ( dtPtnINT、 ピクセル ID 整数、 startTm INT, endTm INT, patID BIGINT、 efile BLOB、 PRIMARY KEY(dtPtn、pxID、startTm) );
テーブルにデータを挿入する次のメソッドを作成しました。
public static void insertDataKey(HashMap nameValuePair, String colFamily) {
try {
Cluster cluster = HFactory.getOrCreateCluster(clusterName, hostPort);
Keyspace keyspace = HFactory.createKeyspace(CASSANDRA_DUMMY_KEY_SPACE, cluster);
Integer dtPtn = (Integer)nameValuePair.get("dtPtn");
Integer pxID = (Integer)nameValuePair.get("pxID");
Integer startTm = (Integer)nameValuePair.get("startTm");
Integer endTm = (Integer)nameValuePair.get("endTm");
Long patID = (Long)nameValuePair.get("patID");
byte[] efile = (byte[])nameValuePair.get("efile");
HColumn<String, Integer> column1 = HFactory.createColumn("dtPtn", dtPtn, new StringSerializer(), IntegerSerializer.get());
HColumn<String, Integer> column2 = HFactory.createColumn("pxID", pxID, new StringSerializer(), IntegerSerializer.get());
HColumn<String, Integer> column3 = HFactory.createColumn("startTm", startTm, new StringSerializer(), IntegerSerializer.get());
HColumn<String, Integer> column4 = HFactory.createColumn("endTm", endTm, new StringSerializer(), IntegerSerializer.get());
HColumn<String, Long> column5 = HFactory.createColumn("patID", patID, new StringSerializer(), LongSerializer.get());
HColumn<String, byte[]> column6 = HFactory.createColumn("efile", efile, new StringSerializer(), BytesArraySerializer.get());
Composite rowKey = new Composite();
rowKey.addComponent("dtPtn", StringSerializer.get());
rowKey.addComponent(dtPtn, IntegerSerializer.get());
rowKey.addComponent("pxID", StringSerializer.get());
rowKey.addComponent(pxID, IntegerSerializer.get());
rowKey.addComponent("startTm", StringSerializer.get());
rowKey.addComponent(startTm, IntegerSerializer.get());
Mutator<Composite> mutator = HFactory.createMutator(keyspace, CompositeSerializer.get());
mutator.addInsertion(rowKey, colFamily, column1);
mutator.addInsertion(rowKey, colFamily, column2);
mutator.addInsertion(rowKey, colFamily, column3);
mutator.addInsertion(rowKey, colFamily, column4);
mutator.addInsertion(rowKey, colFamily, column5);
mutator.addInsertion(rowKey, colFamily, column6);
mutator.execute();
} catch (Exception ex) {
ex.printStackTrace();
}
}
ただし、コードを実行すると、
InvalidRequestException (理由: 4 または 0 バイトの int (21) が予想される)
私は Hector API とかなり混同しており、完全に信頼できる完全なチュートリアル/資料を見つけることができません。上記を解決するためのアドバイスは非常に役立ちます。
前もって感謝します。
ps: 私は Cassandra 1.2 を使用しています