擅长:python、mysql、java
<p>对于<strong>批处理</strong>,您只需</p>
<pre><code>def print_row(element):
print element
count_pcol = (
lines
| 'Count elements' >> beam.combiners.Count.Globally()
| 'Print result' >> beam.Map(print_row)
)
</code></pre>
<p><a href="https://beam.apache.org/releases/pydoc/2.2.0/_modules/apache_beam/transforms/combiners.html#Count.Globally" rel="nofollow noreferrer">beam.combiners.Count.Globally()</a>是一个PTransform,它使用global combine来计算PCollection的所有元素并生成一个值。在</p>
<hr/>
<p>对于<strong>流式处理</strong>,无法计数元素,因为源是一个无界的pcollection,即它永远不会结束。<a href="https://beam.apache.org/documentation/programming-guide/#combine" rel="nofollow noreferrer">CombineGlobally</a>在您的情况下,将继续等待输入,而不会产生输出。在</p>
<p>一个可能的解决方案是设置一个窗口函数和一个非默认触发器。在</p>
<p>我编写了一个简单的管道,它将元素划分为20秒的固定窗口,并为每个窗口的每个键计数。您可以根据需要更改窗口和触发器。在</p>
^{pr2}$