我们正在从流媒体源中构建相当复杂的Dataflow作业.特别是,我们有两个模型,它们共享一组指标,并且大致使用相同的数据源计算得出.作业对稍大的数据集执行连接.
你有关于如何设计这类工作的指导方针吗?任何指标,行为或我们在做出决定时必须考虑的任何事项?
以下是我们想到的几个选项,以及我们如何比较它们:
在一个大型工作中实施一切.考虑常见指标,然后计算特定于模型的指标.
将公共度量计算提取到专用作业,从而产生3个作业,使用Pub/Sub连接在一起.
我正在编写一个从Kafka 0.8读取的自定义DataFlow无界数据源.我想使用DirectPipelineRunner在本地运行它.但是,我得到以下stackstrace:
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)
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为我没有在任何时候为我的自定义源注册评估者.
阅读https://github.com/GoogleCloudPlatform/DataflowJavaSDK,似乎只有有限来源的评估者才能注册.为自定义无界源定义和注册求值程序的推荐方法是什么?
我在Google Container Engine集群上运行了一个HTTP服务(在kubernetes服务之后).
我的目标是使用固定名称从同一GCP项目上运行的Dataflow作业访问该服务(与使用DNS从GKE内部访问服务的方式相同).任何的想法?
是否有可能知道GCP上的DataFlow工作人员使用的外部IP范围是什么?目标是在外部服务上设置某种IP过滤,以便只有我们在GCP上运行的DataFlow作业才能访问该服务.