【发布时间】:2017-04-25 01:38:03
【问题描述】:
我希望创建一个包含十万个对象(甚至可能是一百万个)的 PCollection,以便我在 for 循环中对相同数据应用一百万次操作,但计算出的 PCollectionView 的值不同在循环的每次迭代中。 这是一个 df 可以很好处理的用例吗?有没有更好的方法来实现这一点?我担心的是 PCollectionView 的开销太大,但这可能在一年前曾经是一个问题,但现在这是一个 DF 可以很好地支持的用例。就我而言,我可以硬编码 for 循环的迭代次数(因为我认为 DF 无法处理在运行时动态确定迭代次数的情况。)这是一些伪代码:
PCollection<KV<Integer,RowVector>> rowVectors = ...
PCollectionView<Map<Integer, Float>> vectorX;
for (int i=0; i < 1000000; i++) {
PCollection<KV<Integer,Float>> dotProducts =
rowVectors.apply(ParDo.of(new DoDotProduct().withSideInputs(vectorX));
vectorX = dotProducts.apply(View.asMap());
}
【问题讨论】: