Java 将单个PCollection拆分为多个(动态数量的)PCollection,然后对每个集合进行计算
我有一个从PubsubIO读取的无界集合,包含数据,称为Java 将单个PCollection拆分为多个(动态数量的)PCollection,然后对每个集合进行计算,java,google-cloud-dataflow,apache-beam,Java,Google Cloud Dataflow,Apache Beam,我有一个从PubsubIO读取的无界集合,包含数据,称为Tradeformat like { timestamp: 123, type: "", side: "" // sell or buy volume: 123.12, location: "" } 有数百个类型s和40多个位置s,它们之间的关系是n 我的任务是按侧、类型和位置计算10分钟和60分钟类别的交易总量,并根据类型计算总交易量。因此,输出应该是4个集合,每个集合用于10分钟和60分钟,同时用于销售和购买,称为
Trade
format like
{
timestamp: 123,
type: "",
side: "" // sell or buy
volume: 123.12,
location: ""
}
有数百个类型
s和40多个位置
s,它们之间的关系是n
我的任务是按侧
、类型
和位置
计算10分钟和60分钟类别的交易总量,并根据类型计算总交易量。因此,输出应该是4个集合,每个集合用于10分钟和60分钟,同时用于销售和购买,称为TotalTrade
,如
{
total: 123,
type: "",
location: "",
}
到目前为止我试过的是
类型的KV
交易
KV
Iterable
中每个位置的总体积,因此输出为KV
交易
s,计算总数,然后输出结果。对我来说,它并没有采用ApacheBeam或Google数据流的并行模型
所以我的问题是,在梁模型中,有没有办法将集合分支为动态数集合。例如,我的问题可以通过以下转换解决。
交易的类型的收藏
位置
TotalTrade
TotalTrade
分类(按location
和type
因此,现在我们有了基于
类型的总卷如果在管道创建期间动态数量不可用,则不可能将集合分支为动态数量的集合。图形/步骤设置在管道的开头,不能更改
如果您有很多动态数字,您可以尝试使用id输出结果并按id分组。但是,如果您没有很多id并且确实有很多值,您将得到一些热键(所有id都必须由一个工作人员处理)。使用复合键(类型、边、位置)的Count.perKey()如何,例如,表示为千伏?@jkff是的。我想出了如何使用组合变换和复合关键点来解决这个问题。我会尽快把它寄到这里