Google cloud dataflow 关于数据流远程执行和apache beam反序列化的混淆?
我正在查看以下代码,其中参数从客户端微服务传递到GCP中的数据流远程作业Google cloud dataflow 关于数据流远程执行和apache beam反序列化的混淆?,google-cloud-dataflow,apache-beam,Google Cloud Dataflow,Apache Beam,我正在查看以下代码,其中参数从客户端微服务传递到GCP中的数据流远程作业 LaunchTemplateParameters launchTemplateParameters = new LaunchTemplateParameters() .setEnvironment(runtimeEnvironment) .setJobName(jobName) .setParameters(se
LaunchTemplateParameters launchTemplateParameters = new LaunchTemplateParameters()
.setEnvironment(runtimeEnvironment)
.setJobName(jobName)
.setParameters(serializableParams);
我注意到所有serializableParams都是字符串键和字符串值,但是在apache beam的读取端,我看到一个对象以某种方式被“反序列化”。以下是apache beam中的PipelineOptions对象
public interface RosterPipelineOptions extends DataflowPipelineOptions {
@Description("The GCP bucket to read from")
ValueProvider<String> getInputBucket();
void setInputBucket(ValueProvider<String> value);
@Description("Prefix of the roster file")
ValueProvider<RosterTypeEnum> getRosterType();
void setRosterType(ValueProvider<RosterTypeEnum> value);
@Description("Client Id")
ValueProvider<String> getClientId();
void setClientId(ValueProvider<String> value);
}
公共接口RosterPipelineOptions扩展了DataflowPipelineOptions{
@说明(“要读取的GCP存储桶”)
ValueProvider getInputBucket();
void setInputBucket(ValueProvider值);
@说明(“名册文件的前缀”)
ValueProvider getRosterType();
void setRosterType(ValueProvider值);
@说明(“客户Id”)
ValueProvider getClientId();
void setClientId(ValueProvider值);
}
客户端api和服务器api中的序列化和反序列化可能会以不对称结束,这意味着应用程序开发人员以一种方式序列化,服务器以另一种方式反序列化。ApacheBeam如何将其反序列化到RosterTypeEnum对象中
更好的是,是否有一个对称的API客户端,我们可以向其提供jackson/gson类型的对象,然后进行序列化?或者我只需要知道反序列化技术,然后在客户端使用它进行序列化
更多信息在这里将是伟大的
我更习惯于这样的客户端API
- 调用客户端api
- 框架中的客户端impl使用jackson序列化
- 服务器脚手架使用jackson反序列化
- 我的代码再次使用该对象
- 应用程序开发人员序列化为字符串
- 使用字符串调用客户端impl
- 平台将字符串反序列化为对象
- 应用程序开发人员代码现在读取对象