我有一个接收soap消息的web服务,在xjc的帮助下,我能够部分地将这些消息转换为pojo,然后使用kafkajson序列化程序将这些消息发送给kafka。
我现在正在尝试使用kafka流式传输消息,然后最终保存到一个数据湖。
要求对数据湖中的数据至少有一些结构。然而,由于最初的模式是在2个xsd中给出的,它们是循环相关的,所以我还没有找到一个解决方案来解决如何在数据流中应用结构的问题。我知道在给定一批消息的情况下会推断出一个模式,但目前我没有足够的样本数据。
需要注意的一点是,消息根据原始模式的不同而不同 <choice>
元素,因此每条消息可能不相同。鉴于上述限制,如何实现对这些数据的结构化?我没有想到要附加任何代码,因为这更像是一个攻击计划,而不是目前的代码问题。希望这是在指导方针和有人可以帮助我把这个项目进行。提前谢谢。
1条答案
按热度按时间ulydmbyx1#
如果您真的想要一个定义良好、不断发展的模式,能够很好地与datalakes(hdfs、s3等)一起工作,我建议通过合流模式注册中心使用avro,而不是json。你甚至可以用
KafkaAvroSerializer
而不是您当前使用的json。avro不是kafka的要求,但这也将使您更容易地使用kafka connect框架来写入hdfs或s3,并使用诸如hive/presto/sparksql之类的sql工具来查询这些数据。Kafka连接是首选,因为这里没有流式代码,你实际上必须写。
如果您想使用xml和xsd模式,请查看kafka connect xml transformer
我遇到的其他具有良好xml支持的datalake etl替代方案是nifi和streamset。