当前位置: 首页 > 知识库问答 >
问题:

检查PCollection是否为空-Apache Beam

封景曜
2023-03-14

有什么方法可以检查PCollection是否为空?

我没有在数据流和Apache Beam的留档中找到任何相关内容。

共有2个答案

杜起运
2023-03-14

如果不对其应用PTransform(例如Count.globally()或Combine.combineFn()),就无法检查PCollection的大小,因为PCollection不像JavaSDK的典型Collection

它是有界或无界数据集合的抽象,其中数据被馈送到集合中,以便对其应用操作(例如PTransform)。它也是并行的(正如类开头的P所示)。

因此,您需要一种机制来获取每个工作节点/节点的元素计数,并将其组合以获得值。直到转换结束,才知道它是0还是n。

葛季萌
2023-03-14

您没有指定使用哪个SDK,所以我假设使用Python。代码很容易移植到Java。

您可以应用元素的全局计数,然后通过应用简单的比较将数值映射到布尔值。您可以使用pvalue侧向输入该值。AsSingleton函数,如下所示:

import apache_beam as beam
from apache_beam import pvalue

is_empty_check = (your_pcollection
                    | "Count" >> beam.combiners.Count.Globally()
                    | "Is empty?" >> beam.Map(lambda n: n == 0)
                    )

another_pipeline_branch = (
    p
    | beam.Map(do_something, is_empty=pvalue.AsSingleton(is_empty_check))
)

侧面输入的用法如下:

def do_something(element, is_empty):
    if is_empty:
        # yes
    else:
        # no
 类似资料:
  • 问题内容: 所以我知道这是一个很普遍的问题,已经找到了解决方案。但是,当我尝试这样做时,它无法正常工作。 我的JTextField为空,并且未启用该按钮。当我在文本字段中写入内容时,该按钮未启用。 因此,我的程序应每秒检查一次此字段是否为空。只要有人在文本字段中写入内容,就应启用该按钮。^^ 问题答案: 为此,您需要在中添加更改侦听器(一个响应文本更改的侦听器),并且在内,您需要根据是否为空将其更

  • 问题内容: 有什么最短的方法吗? 如果我是正确的,应该用? 有可能,并且在一行中写(也许是数组?)而不重复? 问题答案: 如果要测试变量是否 确实 是,请使用标识运算符: 如果要检查是否未设置变量: 或者,如果变量不为空,则为空字符串,零,..: 如果要测试变量是否不是空字符串,也将足够:

  • 问题内容: 我不能成为“匿名者”吗?它可以为空或的值 。 问题答案: 如果变量已初始化,将返回true。如果您的表单字段的值设置为,则提交该表单时,尽管其中可能没有任何数据,但该值将始终为“设置”。 而是测试字符串并测试其长度

  • 我想检查变量是否为空: 此代码基于:https://www.thomasmaurer.ch/2010/07/powershell-check-variable-for-null/,但这不起作用。 我该怎么解决这个问题? ps。堆栈中有东西

  • 我有一个名为< code>Person的对象。 它有几个属性; 我设置了一个person对象,比如< code>Person p = new Person(1,“Joe”);。 1.) 我需要检查对象是否为空;以下表达式是否正确; 2.)我需要知道ID是否包含Int。 但是,java不允许这样做。我该怎么办?