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

如何将自定义MyPipelineOptions传递到Google Dataflow DOFN?

程承恩
2023-03-14
java.lang.IllegalArgumentException:
com.xxx.MyProcessor,
@ProcessElement parseItem(PubsubMessage, MyPipelineOptions, OutputReceiver),
@ProcessElement parseItem(PubsubMessage, MyPipelineOptions, OutputReceiver),
parameter of type MyPipelineOptions at index 1:
MyPipelineOptions is not a valid context parameter.
Should be one of [BoundedWindow, RestrictionTracker<?, ?>]

如果我将MyPipelineOptions更改为PipelineOptions,错误就消失了,但是如果我试图在函数中强制转换回MyPipelineOptions,我会得到一个ClassCastException,所以我猜这不是正确的方法...知道如何将自定义选项类传递给元素处理器吗?

下面是代码结构:

import org.apache.beam.runners.dataflow.options.DataflowPipelineOptions;

public interface MyPipelineOptions extends DataflowPipelineOptions {
  ...
}
public class MyProcessor extends DoFn<PubsubMessage, String> {
  @ProcessElement
  public void parseItem(@Element PubsubMessage message, MyPipelineOptions po, OutputReceiver<String> out) throws Exception {
    ...
  }
}

注意文档只显示了一个非自定义PipelineOptions的示例

PipelineOptions:当前管道的PipelineOptions始终可以通过将其作为参数添加到流程方法中来访问:

.of(new DoFn<String, String>() {
  public void processElement(
    @Element String word, PipelineOptions options) {

  }
 })

共有1个答案

邓令
2023-03-14
public class MyProcessor extends DoFn<PubsubMessage, String> {
  @ProcessElement
  public void parseItem(
    @Element PubsubMessage message,
    PipelineOptions po,
    OutputReceiver<String> out) throws Exception {

      MyPipelineOptions opts = po.as(MyPipelineOptions.class);
      ...
    }
  }
}
 类似资料:
  • 我是一个相当新的反应,这是一个我正在努力解决的问题。

  • 我使用的是spring ldap和spring boot starter安全性的组合。我已经配置了基本的设置,但仍在传递用户名和密码以进行身份验证。它总是试图验证应用程序中指定的默认凭据。财产。不管怎样,通过传递登录表单中给出的信誉,是否可以正确地做到这一点。 @覆盖受保护的无效配置(AuthenticationManagerBuilder auth)引发异常{ }

  • 我还在研究spring batch,遇到了一个需要将jobParameter传递给定制bean的场景。作业参数包含文件的路径。 这已经包含在读取器的步骤范围中,这里没有包含。 问题是。当类被实例化时,传递给bean的值是“file:#{jobparameters['path'}/filename”,而不是调用作业时传递的jobParameter的值。这让我很困惑,因为我在multiResource

  • 项目配置为使用多个MongoTemplate Mongo Ref传递为 问题:我需要访问MongoTemplate,它是类似的标准存储库。 例如,如果正在将接口扩展为 MyRepoCustomImpl 问题:相反,难道没有任何方法可以让要使用的MongoTemplate根据它扩展到的Repo自动注入或解析吗?

  • 我编写了这个函数,它只是用子字符串替换数据表列中的每个值: 但每次我试着运行它时,我都会发现错误: 现在我已经做了很多关于为什么它不起作用的研究,但我不明白。我读过一些关于标准评估和懒散的东西,但我尝试的似乎都不管用。有什么帮助吗? 谢谢

  • 我正在尝试建立一个贝宝Express实例,并将订单号从网站传递到贝宝交易中,这样客户端就有了一个引用。这就是他们以前的系统与express的工作方式,但是现在我们从头开始重建了这个站点,没有从Paypal找到任何关于自定义值的有用文档,甚至没有传递一个描述。 我尝试过PayPal Express Checkout.js-发送自定义参数,这两种解决方案对我的PayPal沙箱都没有任何作用。贝宝提供的