1

Hector Insert double/float data into Cassandra について質問があります

new Double("13.45")------->13.468259733915328
new Float("64.13") ------->119.87449

ヘクターでCassandraにデータを挿入すると

TestDouble ch = new TestDouble("talend_bj",
        "localhost:9160");
String family = "talend_1";
ch.ensureColumnFamily(family);
List values = new ArrayList();
values.add(HFactory.createColumn("id", 2, StringSerializer.get(),
        IntegerSerializer.get()));
values.add(HFactory.createColumn("name", "zhang",
        StringSerializer.get(), StringSerializer.get()));
values.add(HFactory.createColumn("salary", 13.45,
        StringSerializer.get(), DoubleSerializer.get()));
ch.insertSuper("14", values, "user1", family, StringSerializer.get(),
        StringSerializer.get());
StringSerializer se = StringSerializer.get();
MultigetSuperSliceQuery<String, String, String, String> q = me.prettyprint.hector.api.factory.HFactory
        .createMultigetSuperSliceQuery(ch.getKeyspace(), se, se, se, se);
// q.setSuperColumn("user1").setColumnNames("id","name")
q.setKeys("12", "11","13", "14");
q.setColumnFamily(family);
q.setRange("z", "z", false, 100);
QueryResult<SuperRows<String, String, String, String>> r = q
        .setColumnNames("user1", "user").execute();
Iterator iter = r.get().iterator();
while (iter.hasNext()) {
    SuperRow superRow = (SuperRow) iter.next();
    SuperSlice s = superRow.getSuperSlice();
    List<HSuperColumn> superColumns = s.getSuperColumns();
    for (HSuperColumn superColumn : superColumns) {
        List<HColumn> columns = superColumn.getColumns();
        System.out.println(DoubleSerializer.get().fromBytes(((String) superColumn.getSubColumnByName("salary").getValue()).getBytes()));
    }
}

13.45 が表示されますが、列の値は 13.468259733915328 です。

4

1 に答える 1

0

問題を 2 つに分割する必要があります。書き込み後、スキーマの一部を定義した場合、またはコマンドライン cli で ASSUME キーワードを使用した場合は、cassandra でデータを表示して、それが正しいかどうかを確認します。PlayOrm にはこの EXACT 単体テスト (ヘクターではなく astyanax の上にある PlayOrm にあります) があり、問題なく動作します....-200.23 のテストでの比較に注意してください...

https://github.com/deanhiller/playorm/blob/master/input/javasrc/com/alvazan/test/TestColumnSlice.java

ダウンしたら、cassandra のデータは正しいように見えますか? その場合、問題はコード内の値の読み取りにあり、そうでない場合は書き込みです。

于 2012-09-28T14:20:38.827 に答える