我是Logstash和Avro的初学者。我们正在建立一个系统,logstash作为Kafka队列的制作人。然而,我们遇到了这样一个问题:由Logstash生成的avro序列化事件无法由apache提供的avro工具jar(版本1.8.2)解码。此外,我们注意到Logstash和avro工具的序列化输出有所不同。
我们有以下设置:
例如,考虑以下模式:
{
"name" : "avroTestSchema",
"type" : "record",
"fields" : [ {
"name" : "testfield1",
"type" : "string"
},
{
"name" : "testfield2",
"type" : "string"
}
]
}
和以下json字符串:
{"testfield1":"somestring","testfield2":"anotherstring"}
当使用Logstash序列化时。日志存储配置文件:
input {
stdin {
codec => json
}
}
filter {
mutate {
remove_field => ["@timestamp", "@version"]
}
}
output {
kafka {
bootstrap_servers => "localhost:9092"
codec => avro {
schema_uri => "/path/to/TestSchema.avsc"
}
topic_id => "avrotestout"
}
stdout {
codec => rubydebug
}
}
输出(使用cat):
FHNvbWVzdHJpbmcaYW5vdGhlcnN0cmluZw==
使用avro工具进行序列化时。命令:
java -jar avro-tools-1.8.2.jar jsontofrag --schema-file TestSchema.avsc message.json
输出
somestringanotherstring
命令:
java -jar avro-tools-1.8.2.jar fromjson --schema-file TestSchema.avsc message.json
输出:
Objavro.codenullavro.schema▒{"type":"record","name":"avroTestSchema","fields":[{"name":"testfield1","type":"string"},{"name":"testfield2","type":"string"}]}▒▒▒▒&70▒▒Hs▒U2somestringanotherstring▒▒▒▒&70▒▒Hs▒U
所以我们的问题是:我们如何配置Logstash以使输出与apache avro-tools jar兼容?
更新:我们发现logstash生成的avro输出是base64编码的。但是,我们无法找到发生这种情况的地方,以及如何使其与avro工具兼容
正如更新中提到的,我们发现标准Logstash Avro编解码器在Avro输出中添加了非可选的base64编码。我们发现这是不可取的。因此,我们分叉了编解码器,并使这种编码可配置。我们对此进行了测试,并在我们的几个系统上实现了开箱即用。
github上提供了fork:https://github.com/Rubyan/logstash-codec-avro
要设置(或取消设置)base 64编码,请将其添加到您的logstash配置文件中:
output {
stdout {
codec => avro {
schema_uri => "schema.avsc"
base64_encoding => false
}
}
}
问题内容: 我的文件在第一行都有编码定义器,就像我的 正如我在相关问题上提到的那样,我用来返回api文档。由于我通过以下方式定义编码: 一切正常,当我调用我的API服务时,除了 由pprint由字典形成的字符串 外 , 没有任何编码问题 __ 由于我在字典中的某些值中使用土耳其语字符,因此pprint将其转换为等效的字符,例如: 我的纯文本输出如下: 我尝试将pprint输出解码或编码为不同的编码
tags:输入法 安装 安装步骤如下: 进入搜狗输入法官网,下载 Linux 64位版本 http://pinyin.sogou.com/linux/?r=pinyin 最新版本已经支持 Ubuntu12.04、14.04及16.04,而且对 linux mint 18 的支持非常好。 在终端中执行命令: sudo dpkg -i sogoupinyin_2.1.0.0086_amd64.deb
我有一个maven项目(link),我想在上面运行代码覆盖率。 我在主项目pom文件上运行了命令,但没有生成报告。相反,我得到的警告是 有人能建议我如何用这个pom文件生成代码覆盖率报告吗。我正在使用apache-maven-3.3。9和testNG。
本文向大家介绍Java编码辅助工具Lombok用法详解,包括了Java编码辅助工具Lombok用法详解的使用技巧和注意事项,需要的朋友参考一下 前言 在项目开发过程中,经常会涉及到一些调整很少但又必不可少的环节,比如实体类的Getter/Setter方法,ToString方法等。这时可以使用Lombok来避免这种重复的操作,减少非核心代码的臃肿,提高编码效率。 如何在IntelliJ IDEA中引
我已经在spring工具套件中创建了一个spring项目。 我的代码是 正如您在这一行中看到的,我已经导入了GetMapping。 pom.xml
我刚刚安装了android studio,但gradle show的错误如下。插件版本为7.0,Gradle版本为7.0.2。此外,我试图下载到另一个gradle版本,但仍然无法完成构建,它显示了相同的错误。 配置根项目我的应用程序时出现问题。 无法解析配置“: classpath”的所有工件。无法解析com.android.tools.build: gradle: 7.0.0。项目要求: