Bigtableで開始行と終了行をスキャンしようとしています。 スキャン間の要素は約100Kです。 setCaching(500)
を使用してHBaseで実行できたバッチでそれらを取得したいのですが。HbaseとGoogle Bigtable:多数の行をスキャンする
Bigtableでは、setCaching
は無視され、1 RPCで全体の結果セットを取得しようとします。どのようにHBaseに似たように達成することができますか?
私はJavaドライバbigtable-hbase-1.1
とバージョンを使用しています1.0.0-pre3
Bigtableの設定:
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);
スキャナの設定:
byte[] start = "prefix".getbytes() ;
byte[] end = Bytes.add("prefix".getbytes(),(byte))0xff);
Scan scan = new Scan(start, end);
出てくる行の
期待数は100KSのオーダーであります。
私は5分の長いRPCタイムアウトを保持しているし、まだ取得DEADLINEがエラーを上回りました。ほんの100k行だけ? – Peter
バッファチャンクサイズをチューニングする方法はありますか?小さすぎるかもしれない。 私の場合、クライアントはシンガポールと台湾のbigtableにいるので、1回の往復には50ミリ秒かかります – Peter
Bigtableはまずサーバ上で結果全体を取得してからクライアントにストリームするためですか?私はその後、全体の結果セットを得るのは時間がかかるかもしれないと思いますか? – Peter