Google cloud dataflow org.json.JSONObject的Apache Beam编码器
我正在用ApacheBeam编写一个数据管道,它读取Pub/Sub,将消息反序列化为JSONObject,并将它们传递给其他一些管道阶段。问题是,当我尝试提交代码时,出现以下错误: 执行Java类时发生异常。无法返回用于转换为JSON和模糊PII数据/ParMultiDo(JSONifyAndObfuscate)的默认编码器。输出[PCollection]。纠正以下根本原因之一: [错误]未手动指定编码器;可以使用.setCoder()执行此操作。 [错误]从CoderRegistry推断编码器失败:无法为org.json.JSONObject提供编码器。 [错误]使用已注册的CoderProvider生成编码器失败。 [错误]有关详细故障,请参阅抑制的异常。 [错误]使用生成PTTransform的默认输出编码器失败:调用了PTTransform.getOutputCoder 基本上,错误是Beam找不到org.json.JSONObject对象的编码器。我不知道在哪里可以找到这样一个编码器,也不知道如何构建一个。有什么想法吗Google cloud dataflow org.json.JSONObject的Apache Beam编码器,google-cloud-dataflow,apache-beam,Google Cloud Dataflow,Apache Beam,我正在用ApacheBeam编写一个数据管道,它读取Pub/Sub,将消息反序列化为JSONObject,并将它们传递给其他一些管道阶段。问题是,当我尝试提交代码时,出现以下错误: 执行Java类时发生异常。无法返回用于转换为JSON和模糊PII数据/ParMultiDo(JSONifyAndObfuscate)的默认编码器。输出[PCollection]。纠正以下根本原因之一: [错误]未手动指定编码器;可以使用.setCoder()执行此操作。 [错误]从CoderRegistry推断编码器
谢谢 了解编码器的最佳起点在Beam编程指南中:。简短的版本是,编码器用于指定不同类型的数据如何在波束管道中的特定点(通常在阶段边界处)编码到字节字符串或从字节字符串编码到字节字符串。不幸的是,默认情况下没有JSONObject的编码器,因此这里有两个选项:
谢谢我通过扩展coder类并通过基本上将JSON对象转换为字符串来实现“encode”和“decode”两种方法,创建了一个定制的coder类。