jjzjj

java - Json 到 avro 的转换

我正在将Json转换为avro。我在JSONArray中有json数据。因此,在将其转换为字节数组时,我遇到了问题。下面是我的代码:staticbyte[]fromJsonToAvro(JSONArrayjson,Stringschemastr)throwsException{ExcelToJsonejj=newExcelToJson();Listlist=newArrayList();if(json!=null){intlen=json.length();for(inti=0;i那我该怎么做呢?如何将JsonArray对象转换为字节(即,如何对JsonArray对象使用getByte

java - 具有解码器问题的 Kafka Avro 消费者

当我尝试运行KafkaConsumerwithAvro时在我各自模式的数据上,它返回错误“AvroRuntimeException:Malformeddata.Lengthisnegative:-40”。我看到其他人也有类似的问题convertingbytearraytojson,Avrowriteandread,和KafkaAvroBinary*coder.我也引用了这个ConsumerGroupExample,这些都有帮助,但到目前为止对这个错误没有帮助。它一直工作到这部分代码(第73行)解码器decoder=DecoderFactory.get().binaryDecoder(b

java - Apache Avro : map uses CharSequence as key

我正在使用ApacheAvro.我的模式有map类型:{"name":"MyData","type":{"type":"map","values":{"type":"record","name":"Person","fields":[{"name":"name","type":"string"},{"name":"age","type":"int"},]}}}编译模式后,生成的Java类使用CharSequence作为MapMyData的key。使用Map中的CharSequence作为key很不方便,有没有办法为Map生成String类型的key在ApacheAvro?附言问题是,例

java - 以编程方式合并两个 avro 模式

我有两个相似的模式,其中只有一个嵌套字段发生变化(在schema1中称为onefield,在schema2中称为anotherfield)。架构1{"type":"record","name":"event","namespace":"foo","fields":[{"name":"metadata","type":{"type":"record","name":"event","namespace":"foo.metadata","fields":[{"name":"onefield","type":["null","string"],"default":null}]},"defau

java - Avro 模式不支持向后兼容性

我有这个avro架构{"namespace":"xx.xxxx.xxxxx.xxxxx","type":"record","name":"MyPayLoad","fields":[{"name":"filed1","type":"string"},{"name":"filed2","type":"long"},{"name":"filed3","type":"boolean"},{"name":"metrics","type":{"type":"array","items":{"name":"MyRecord","type":"record","fields":[{"name":"mi

java - 如何在 Avro 中从 GenericRecord 转换为 SpecificRecord 以获得兼容的模式

AvroSpecificRecord(即生成的java类)是否与模式演变兼容?IE。如果我有Avro消息源(在我的例子中是kafka)并且我想将这些消息反序列化为特定记录,是否可以安全地进行?我看到的:在模式的末尾添加一个字段工作正常-可以反序列化ok到特定记录在中间添加一个字段不会-即破坏现有客户即使消息兼容,这也是一个问题。如果我能找到新的模式(使用例如confluent模式注册表),我可以反序列化为GenericRecord,但似乎没有办法从genericrecord映射到不同模式的specificrecord..MySpecificTypemessage=(TSpecificD

CDC 数据入湖方案:MySQL > Kafka Connect + Schema Registry + Avro > Kafka > Hudi

本文介绍的整体方案选型是:使用KafkaConnect的DebeziumMySQLSourceConnector将MySQL的CDC数据(Avro格式)接入到Kafka之后,通过Flink读取并解析这些CDC数据,其中,数据是以Confluent的Avro格式存储的,也就是说,Avro格式的数据在写入到Kafka以及从Kafka读取时,都需要和ConfluentSchemaRegistry进行交互,从而获取Schema信息,消息经Flink读取后会写入到Hudi表,从而完成全部的数据接入工作。1.前置依赖本文不会展开介绍CDC数据进入Kafka之前的操作,此部分可以参考:《CDC数据入湖方案:

java - 如何将我的 json 字符串进行 avro 二进制编码为字节数组?

我有一个实际的JSON字符串,我需要将其avro二进制编码为字节数组。经过ApacheAvrospecification,我想出了下面的代码。我不确定这样做是否正确。谁能看看我尝试对JSON字符串进行avro二进制编码的方式是否正确?我使用的是ApacheAvro1.7.7版本。publicclassAvroTest{privatestaticfinalStringjson="{"+"\"name\":\"Frank\","+"\"age\":47"+"}";privatestaticfinalStringschema="{\"type\":\"record\",\"namespace

CDC 数据入湖方案:MySQL > Flink CDC + Schema Registry + Avro > Kafka > Hudi

本文是《CDC数据入湖方案:MySQL>FlinkCDC>Kafka>Hudi》的增强版,在打通从源端数据库到Hudi表的完整链路的前提下,还额外做了如下两项工作:引入ConfluentSchemaRegistry,有效控制和管理上下游的Schema变更使用Avro格式替换Json,搭配SchemaRegistry,可以抽离Avro中的Schema数据,减少了Avro消息的体积,提升传输速率1.环境准备本文依旧使用Debezium官方提供的一个MySQLDocker镜像,构建操作可参考其官方文档,使用的是其内置的inventory数据库;本文需要搭建一个ConfluentSchemaRegis

java - 使用 HBase 列或使用 Avro 序列化数据哪个更好?

我正在开发一个项目,该项目使用HBase存储用户的键/值信息。我们正在重新设计我们正在使用的HBase模式。正在讨论的两个选项是:使用HBase列限定符作为键的名称。这会使行变宽,但非常稀疏。将所有数据转储到一个列中,并使用Avro或Thrift将其序列化。这两种方法的设计权衡是什么?一个比另一个更可取吗?他们有什么理由不使用Avro或Thrift存储数据吗? 最佳答案 总而言之,我倾向于为每个键使用不同的列。1)显然,您强制要求客户端使用Avro/Thrift,这是另一个依赖项。这种依赖性意味着您可以消除某些工具的可能性,例如BI