google-cloud-dataflow - 尝试从 Apache Beam 中的选项获取值时出现空指针异常
问题描述
我正在使用 JAVA8 和 Apache Beam 2.19.0 来运行一些数据流作业。根据我的要求,我在代码中动态设置选项值,如下所示。
option.setDay(ValueProvider.StaticValueProvider.of(sDay))
我试图在同一个数据流管道的另一个转换中得到这个。当我运行小数据时,它的工作正常我能够获得 options.getDay().get() 值,但是对于不同文件中的 500 万行等大数据,它在 options.getDay().get 处给出空指针异常()。
为这个问题添加更多示例点以便更好地理解。
- 如果我正在阅读 100 万行,它执行得很好。
- 如果我正在阅读 200 万行,它执行得很好,但给了 Throttling logger worker。它仅用了 25.107 秒就用完了 30 秒的日志配额
- 如果我正在阅读超过 200 万行,它会给 Throttling logger 工作人员。它仅在 25.107 秒内就用完了 30 秒的日志配额,并且在 options.getDay().get() 处出现空指针异常
解决方案
如果我理解正确,看起来您正在绑定setDay
流中的每个元素。我猜想一个元素正在调用set
,而另一个元素正在尝试get
或set
再次并行,这会导致空指针异常。
要解决此问题,您可以将sDay
元素本身传递给另一个属性,而不是修改选项。
推荐阅读
- git - VS Code 1.57版(2021年5月发布)检测不到git SCM
- java - 在片段android中初始化视图元素私有
- git - 第一次推送到 Gitlab 时得到![remote denied] development -> development (pre-receive hook denied)
- autodesk-forge - 要上传到 Autodesk Forge 的文件格式
- html - 单击R中的操作按钮时下拉
- javascript - 即使验证失败,jsPDF也会在提交时生成
- cmd - 如何使用来自多个目录的一个命令编译多个 proto 文件
- javascript - 计算唯一值算法
- python - 我想生成随机单词作为标签。我尝试了很多东西,但它不起作用
- python - 带有 IIS 服务器的 Django 意外重启