gpt4 book ai didi

java - 在数据流中执行聚合

转载 作者:行者123 更新时间:2023-12-01 19:52:24 26 4
gpt4 key购买 nike

我将(时间序列)值存储在 Bigtable 中,并且遇到了一个用例,我需要对这些值应用过滤器并执行聚合。我使用以下配置来获取与 Bigtable 的连接(以执行范围扫描等):

Connection connection = BigtableConfiguration.connect(projectId, instanceId);
Table table = connection.getTable(TableName.valueOf(tableId));

table.getScanner(<a scanner with filter>);

这对我使用 ResultScanner 很有帮助,我可以迭代行。但是,我想要做的是,对某些列执行聚合并获取值。我想做的 SQL 等效项是这样的:

SELECT SUM(A), SUM(B)
FROM table
WHERE C = D;

为了在 HBase 中执行相同的操作,我遇到了 AggregationClient (javadoc here ),但是,它需要 Configuration 并且我需要运行 Bigtable 的东西(这样我就不需要使用低级 Hbase API)。

我检查了文档,但找不到任何可以做到这一点的东西(在 Java 中)。任何人都可以分享一个在 BigTable 上使用(非行键或任何)过滤器执行聚合的示例吗?

最佳答案

Bigtable 本身没有任何聚合机制。此外,Bigtable 很难处理 WHERE C = D,因此这种类型的处理通常最好在客户端完成。

AggregationClient 是一个 HBase 协处理器。 Cloud Bigtable 不支持协处理器。

如果您想使用 Cloud Bigtable 进行此类聚合,则必须使用 table.scan() 和您自己的逻辑。如果规模足够大,则必须使用 Dataflow 或 BigQuery 来执行聚合。

关于java - 在数据流中执行聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50933915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com