小编her*_*ick的帖子

Apache Beam - 如何从无界 PCollection 中创建有界 PCollection?

出于调试目的,我希望能够将无界 PCollection 转换为有界 PCollection。有直接的方法吗?在我看来,这样做可以强制管道完成,除其他外,将是有用的。

我认为 Sample.any() (这里的Javadoc:https ://beam.apache.org/documentation/sdks/javadoc/2.5.0/org/apache/beam/sdk/transforms/Sample.html#any-long- ) ,将是我所需要的,但 PTransform 似乎并没有改变管道的边界。

编辑:我尝试了the-hbar-tender的建议,但无法使其工作。我是这样尝试的:

BoundedReadFromUnboundedSource brfus = unbounded.withMaxNumRecords(10);
Run Code Online (Sandbox Code Playgroud)

...无界会像这样创建:

Read.Unbounded unbounded = new Read.Unbounded("some name", pubsubUnboundedSource);
Run Code Online (Sandbox Code Playgroud)

... pubsubUnboundedSource 的创建方式如下:

PubsubUnboundedSource pubsubUnboundedSource = PubsubUnboundedSource(pubsubClientFactory, projectValueProvider, topicValueProvider, subscriptionValueProvider, "some timestamp attribute", "some id attribute", true)
Run Code Online (Sandbox Code Playgroud)

...但是 pubsubClientFactory 无法实例化,因为 PubsubClient 不是公共的。我在那里放弃了。也许还有另一种方法可以解决这个问题。

apache-beam

5
推荐指数
0
解决办法
1677
查看次数

Python Pint 在乘法时不会合并相同数量的单位

使用 Python Pint,当乘以相同数量的单位时,我得到了一个奇怪的结果。你可能期望它们会合并,但事实并非如此。例如:

from pint import UnitRegistry
units = UnitRegistry()
Run Code Online (Sandbox Code Playgroud)

然后:

(3 * units.m) * ( 5 * units.m)  
Run Code Online (Sandbox Code Playgroud)

... 结果是:

<Quantity(15, 'meter ** 2')>
Run Code Online (Sandbox Code Playgroud)

... 哪个是对的。但如果我将其中一个因素转换为毫米,如下所示:

(3 * units.m) * ( 5000 * units.mm)
Run Code Online (Sandbox Code Playgroud)

...它给出了一个无意义的答案:

<Quantity(15000, 'meter * millimeter')>
Run Code Online (Sandbox Code Playgroud)

同样的事情也会发生在除法以及其他维度上,比如质量、时间等。

但是,加法确实有效:

(3 * units.m) + ( 5000 * units.mm)
<Quantity(8.0, 'meter')>
Run Code Online (Sandbox Code Playgroud)

有人知道这是什么一回事吗?

python pint

4
推荐指数
1
解决办法
602
查看次数

标签 统计

apache-beam ×1

pint ×1

python ×1