尝试从 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
,而另一个元素正在尝试再次并行调用get
或set
,这会导致空指针异常。
要解决此问题,您可以将元素本身的 sDay
传递给另一个属性,而不是修改选项。
【讨论】:
以上是关于尝试从 Apache Beam 中的选项获取值时出现空指针异常的主要内容,如果未能解决你的问题,请参考以下文章
如何从 GCP 存储桶中读取 Apache Beam 中的多个文件
如何从 PCollection Apache Beam Python 创建 N 个元素组