ich mit einem Anfang und Ende Reihe auf Bigtable zu einem Scan versuchen. Die Elemente zwischen dem Scan sind ungefähr 100K. Ich möchte sie in Chargen, die ich in HBase mit Hilfe von verwenden konnte.Hbase vs Google Bigtable: Scan für große Anzahl von Zeilen
In Bigtable, wie es scheint setCaching
ignoriert und es versucht, die gesamte resultset in 1 RPC zu bekommen. Wie kann es ähnlich wie HBase erreicht werden?
Ich bin mit Java-Treiber bigtable-hbase-1.1
und Version 1.0.0-pre3
Bigtable Konfiguration:
Configuration conf = new Configuration();
conf.set("google.bigtable.buffered.mutator.throttling.enable", "false");
conf.set("google.bigtable.rpc.timeout.ms", "1500000");
conf.set("google.bigtable.grpc.read.partial.row.timeout.ms","1500000");
conf.set("google.bigtable.long.rpc.timeout.ms", "1500000");
conf.set("google.bigtable.grpc.retry.deadlineexceeded.enable", "false");
conf.set("google.bigtable.buffered.mutator.max.inflight.rpcs", "500");
conf.set("google.bigtable.bulk.max.row.key.count", "500");
Configuration conff = BigtableConfiguration.configure(conf,projectID,instanceID);
connection = BigtableConfiguration.connect(conff);
Scanner-Konfiguration:
byte[] start = "prefix".getbytes() ;
byte[] end = Bytes.add("prefix".getbytes(),(byte))0xff);
Scan scan = new Scan(start, end);
Erwartete Anzahl der Zeilen ist in der Größenordnung von 100 kS zu kommen .
ich lange RPC-Timeout von 5 Minuten und noch SCHLUSS immer überschritten Fehler gehalten haben. für nur 100k Reihen? – Peter
Gibt es eine Möglichkeit, die Buffer-Chunk-Größe zu optimieren? Vielleicht ist es zu klein. In meinem Fall, da Client ist in Singapur und BigTable in Taiwan eine einzige Rundfahrt dauert ca. 50 ms – Peter
Oder ist es, weil Bigtable zuerst das gesamte Ergebnis auf dem Server erhalten und es dann an den Client übertragen. Ich nehme an, dann könnte das gesamte Ergebnis-Set zeitaufwendig sein? – Peter