如何通过Web UI向GCP Dataflow任务传递List<String>类型参数
Dataflow Web UI传递List类型参数的正确方法
报错核心原因:Dataflow默认将Web UI输入的参数值识别为字符串类型,Jackson反序列化时无法直接将普通字符串转换为
ArrayList实例,因此抛出「找不到字符串参数的构造方法/工厂方法」的异常。
方案1:无需修改代码的原生传参方式
直接在Web UI的参数输入框中输入无任何外层引号包裹的标准JSON数组即可,示例传参:["foo","bar"]
常见踩坑说明:
- 不要给整个数组加外层单引号/双引号,否则会被识别为单个字符串触发本次报错
- 数组内的字符串元素必须加双引号,不能写成
[foo,bar]的非标准JSON格式 - 重复传入同一key的传参方式仅适用于CLI命令行调用,Web UI暂不支持该格式
方案2:适配逗号分隔传参(需小改代码)
如果希望用更简洁的逗号分隔格式传参,可以在对应PipelineOptions的字段上添加Apache Beam原生提供的@Separator注解,无需修改参数类型,示例代码:
@Separator(",") List<String> getMyStringList(); void setMyStringList(List<String> value);
添加注解后,直接在Web UI输入框中输入逗号分隔的字符串即可自动解析为List,示例传参:foo,bar
内容的提问来源于stack exchange,提问作者kot
相关产品推荐
相关产品推荐

