在 Google Bigtable 中使用 MultiRowRangeFilter
Using the MultiRowRangeFilter in Google Bigtable
我一直在尝试在 Google Bigtable 中使用 MultiRowRangeFilter,但未能使其正常工作。
我主要做的是使用数据流扫描和处理 Bigtable 的不同范围。
List<RowRange> ranges = getRanges();
MultiRowRangeFilter filter = new MultiRowRangeFilter(ranges);
Scan scan = new Scan();
scan.setFilter(filter);
config = CloudBigtableScanConfiguration.Builder()
.withProjectId("my-project")
.withInstanceId("my-instance")
.withTableId("my-table")
.withScan(scan)
.build();
DataflowPipelineOptions options = PipelineOptionsFactory.as(DataflowPipelineOptions.class);
options.setProject("my-project");
options.setStagingLocation("gs://my-bucket");
options.setRunner(DataflowRunner.class);
Pipeline p = Pipeline.create(options);
p.apply(Read.from(CloudBigtableIO.read(config)))
.apply(ParDo.of(new MyFunction()))
.apply(TextIO.write().to("gs://output-bucket"));
getRanges
是一个函数 returns 一个 List<RowRange>
已经像这样被初始化:
RowRange range = new RowRange("1388710#1823246", true, "1388710#1823302", true);
不是扫描并仅返回我感兴趣的范围,而是扫描 returns 我 table.
中的所有数据
知道我做错了什么吗?
根据评论中的讨论,MultiRowRangeFilter 目前不适用于 Cloud Dataflow,功能请求在 GitHub 此处跟踪:
https://github.com/googleapis/cloud-bigtable-client/issues/1239
我一直在尝试在 Google Bigtable 中使用 MultiRowRangeFilter,但未能使其正常工作。 我主要做的是使用数据流扫描和处理 Bigtable 的不同范围。
List<RowRange> ranges = getRanges();
MultiRowRangeFilter filter = new MultiRowRangeFilter(ranges);
Scan scan = new Scan();
scan.setFilter(filter);
config = CloudBigtableScanConfiguration.Builder()
.withProjectId("my-project")
.withInstanceId("my-instance")
.withTableId("my-table")
.withScan(scan)
.build();
DataflowPipelineOptions options = PipelineOptionsFactory.as(DataflowPipelineOptions.class);
options.setProject("my-project");
options.setStagingLocation("gs://my-bucket");
options.setRunner(DataflowRunner.class);
Pipeline p = Pipeline.create(options);
p.apply(Read.from(CloudBigtableIO.read(config)))
.apply(ParDo.of(new MyFunction()))
.apply(TextIO.write().to("gs://output-bucket"));
getRanges
是一个函数 returns 一个 List<RowRange>
已经像这样被初始化:
RowRange range = new RowRange("1388710#1823246", true, "1388710#1823302", true);
不是扫描并仅返回我感兴趣的范围,而是扫描 returns 我 table.
中的所有数据知道我做错了什么吗?
根据评论中的讨论,MultiRowRangeFilter 目前不适用于 Cloud Dataflow,功能请求在 GitHub 此处跟踪:
https://github.com/googleapis/cloud-bigtable-client/issues/1239