Google cloud dataflow 在DirectPipelineRunner上使用自定义数据流无界源

Google cloud dataflow 在DirectPipelineRunner上使用自定义数据流无界源,google-cloud-dataflow,Google Cloud Dataflow,我正在编写一个从Kafka 0.8读取的自定义数据流无边界数据源。我想使用DirectPipelineRunner在本地运行它。然而,我得到了以下结论: Exception in thread "main" java.lang.IllegalStateException: no evaluator registered for Read(KafkaDataflowSource) at com.google.cloud.dataflow.sdk.runners.DirectPipe

我正在编写一个从Kafka 0.8读取的自定义数据流无边界数据源。我想使用DirectPipelineRunner在本地运行它。然而,我得到了以下结论:

Exception in thread "main" java.lang.IllegalStateException: no evaluator registered for Read(KafkaDataflowSource)
        at com.google.cloud.dataflow.sdk.runners.DirectPipelineRunner$Evaluator.visitTransform(DirectPipelineRunner.java:700)
        at com.google.cloud.dataflow.sdk.runners.TransformTreeNode.visit(TransformTreeNode.java:219)
        at com.google.cloud.dataflow.sdk.runners.TransformTreeNode.visit(TransformTreeNode.java:215)
        at com.google.cloud.dataflow.sdk.runners.TransformHierarchy.visit(TransformHierarchy.java:102)
        at com.google.cloud.dataflow.sdk.Pipeline.traverseTopologically(Pipeline.java:252)
        at com.google.cloud.dataflow.sdk.runners.DirectPipelineRunner$Evaluator.run(DirectPipelineRunner.java:662)
        at com.google.cloud.dataflow.sdk.runners.DirectPipelineRunner.run(DirectPipelineRunner.java:374)
        at com.google.cloud.dataflow.sdk.runners.DirectPipelineRunner.run(DirectPipelineRunner.java:87)
        at com.google.cloud.dataflow.sdk.Pipeline.run(Pipeline.java:174)
这是有道理的,因为我在任何时候都没有为我的自定义源注册评估器


在阅读中,似乎只注册了有界源的求值器。为自定义无边界源定义和注册计算器的推荐方法是什么?

DirectPipelineRunner
当前仅在有边界输入上运行。我们正在积极努力消除这一限制,并预计很快将予以释放

同时,为了测试的目的,您可以使用带有MaxNumRecords的
将任何
无界源
转换为
有界源
,如下例所示:

UnboundedSource<String> unboundedSource  = ...; // make a Kafka source
PCollection<String> boundedKafkaCollection =
    p.apply(Read.from(unboundedSource).withMaxNumRecords(10));
unbounddsource unbounddsource=…;//制作卡夫卡的来源
PCollection BoundedKafka集合=
p、 应用(从(无界数据源)读取).withMaxNumRecords(10));
有关更多详细信息,请参阅



另外,在卡夫卡连接器方面也做出了一些努力。您可能希望与我们和其他撰稿人就此通过进行交流。

基本上,我们使用的是旧版kafka和旧版消费者API,因此我们在连接器上的努力目前对您来说有点无用:-)我们希望我们的kafka版本得到更新,并最终使用更标准的连接器。