尝试从 Apache Beam 中的选项获取值时出现空指针异常

Posted

技术标签:

【中文标题】尝试从 Apache Beam 中的选项获取值时出现空指针异常【英文标题】:Getting Null Pointer exception while trying to get value from option in Apache beam 【发布时间】:2021-10-05 17:34:17 【问题描述】:

我正在使用 JAVA8 和 Apache Beam 2.19.0 来运行一些数据流作业。根据我的要求,我在代码中动态设置选项值,如下所示。

option.setDay(ValueProvider.StaticValueProvider.of(sDay))

我试图在同一数据流管道的另一个转换中得到它。当我运行小数据时,它的工作正常我能够获得 options.getDay().get() 值,但对于不同文件中的 500 万行等大数据,它在 options.getDay().get 处给出空指针异常()。

为这个问题添加更多示例点以便更好地理解。

    如果我正在阅读 1 百万行,它执行得很好。 如果我正在阅读 200 万行,它执行得很好,但给 节流伐木工人。它用完了 30 秒的登录配额 仅 25.107 秒 如果我阅读的行数超过 200 万行,则会出现节流 伐木工人。它仅用了 25.107 秒就用完了 30 秒的日志配额,并且 options.getDay().get() 处的空指针异常

【问题讨论】:

请告诉我们您使用的语言。这看起来不像python。是 Java 还是 Go? 感谢我正在使用 java8 【参考方案1】:

如果我理解正确,您似乎在流中的每个元素上都绑定了setDay。我猜想一个元素正在调用set,而另一个元素正在尝试再次并行调用getset,这会导致空指针异常。

要解决此问题,您可以将元素本身的 sDay 传递给另一个属性,而不是修改选项。

【讨论】:

以上是关于尝试从 Apache Beam 中的选项获取值时出现空指针异常的主要内容,如果未能解决你的问题,请参考以下文章

如何从 GCP 存储桶中读取 Apache Beam 中的多个文件

Apache Beam 管道中的连续状态

如何从 PCollection Apache Beam Python 创建 N 个元素组

Apache Beam 中的窗口数据每小时(顺时针)基础

Apache Beam 数据流:从 Azure 到 GCS 的文件传输

结合 BigQuery 和 Pub/Sub Apache Beam