avro 相关问题

Apache Avro是一个主要用于Apache Hadoop的数据序列化框架。

Apache Avro C++ 段错误

我正在尝试使用 Avro C++ 库。我想创建一个 GenericDatum 实例,但使用以下代码时出现段错误。 avro_read.cc #包括 #包括 我正在尝试使用 Avro C++ 库。我想创建一个 GenericDatum 实例,但使用以下代码时出现段错误。 avro_read.cc #include <fstream> #include <avro/GenericDatum.hh> #include <avro/ValidSchema.hh> #include <avro/Compiler.hh> int main(int argc, char* argv[]) { // Read in and compile schema. std::ifstream in("schema.avsc"); avro::ValidSchema valid_schema; avro::compileJsonSchema(in, valid_schema); // Create a generic datum (segfaults). avro::GenericDatum datum(valid_schema); return 0; } CMakeLists.txt cmake_minimum_required(VERSION 3.20) project(repro CXX) find_package(unofficial-avro-cpp CONFIG REQUIRED) add_executable(avro_read avro_read.cc) target_link_libraries(avro_read PRIVATE unofficial::avro-cpp::avrocpp) vcpkg.json { "name": "segfault-repro", "version-string": "unversioned", "description": "A simple repro for the avro GenericDatum segfault", "dependencies": [ "avro-cpp" ] } 架构.avsc { "type": "record", "name": "__root__", "fields": [ { "name": "name", "type": [ "null", "string" ] }, { "name": "total", "type": [ "null", "long" ] } ] } 我使用 CMake 和 Vcpkg 进行编译以及以下命令: cmake -S . -B .build -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=$HOME/vcpkg/scripts/buildsystems/vcpkg.cmake cmake --build .build .build/avro_read 我尝试运行gdb(gdb .build/avro_read,但没有得到任何有用的东西 Program received signal SIGSEGV, Segmentation fault. 0x00005555555ecd70 in ?? () (gdb) bt #0 0x00005555555ecd70 in ?? () #1 0x000055555556b46d in main () 然后我就跑了valgrind --leak-check=full .build/avro_read ==2398834== Memcheck, a memory error detector ==2398834== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al. ==2398834== Using Valgrind-3.20.0 and LibVEX; rerun with -h for copyright info ==2398834== Command: .build/avro_read ==2398834== vex amd64->IR: unhandled instruction bytes: 0xF1 0x60 0x3E 0x0 0x0 0x0 0x0 0x0 0x10 0x7F vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0 vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x0 ESC=NONE vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0 ==2398834== Invalid read of size 1 ==2398834== at 0x4DC7EC0: ??? ==2398834== by 0x4DC60DF: ??? ==2398834== by 0x7: ??? ==2398834== Address 0x1b is not stack'd, malloc'd or (recently) free'd ==2398834== ==2398834== ==2398834== Process terminating with default action of signal 11 (SIGSEGV) ==2398834== Access not within mapped region at address 0x1B ==2398834== at 0x4DC7EC0: ??? ==2398834== by 0x4DC60DF: ??? ==2398834== by 0x7: ??? ==2398834== If you believe this happened as a result of a stack ==2398834== overflow in your program's main thread (unlikely but ==2398834== possible), you can try to increase the size of the ==2398834== main thread stack using the --main-stacksize= flag. ==2398834== The main thread stack size used in this run was 8388608. ==2398834== ==2398834== HEAP SUMMARY: ==2398834== in use at exit: 84,688 bytes in 40 blocks ==2398834== total heap usage: 123 allocs, 83 frees, 97,888 bytes allocated ==2398834== ==2398834== LEAK SUMMARY: ==2398834== definitely lost: 0 bytes in 0 blocks ==2398834== indirectly lost: 0 bytes in 0 blocks ==2398834== possibly lost: 0 bytes in 0 blocks ==2398834== still reachable: 84,688 bytes in 40 blocks ==2398834== suppressed: 0 bytes in 0 blocks ==2398834== Reachable blocks (those to which a pointer was found) are not shown. ==2398834== To see them, rerun with: --leak-check=full --show-leak-kinds=all ==2398834== ==2398834== For lists of detected and suppressed errors, rerun with: -s ==2398834== ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0) [1] 2398834 segmentation fault valgrind --leak-check=full .build/avro_read 更新: avro 代码包含 any/boost any,具体取决于 C++ 版本。 https://github.com/apache/avro/blob/e932c9453be7b36e8874fe92edb3710beef4e47c/lang/c%2B%2B/api/GenericDatum.hh#L27-L31. #if __cplusplus >= 201703L #include <any> #else #include "boost/any.hpp" #endif 当我使用 C++ 14 编译时,没有出现段错误: set (CMAKE_CXX_STANDARD 14) 但是当我使用 C++ 17 或 C++20 时,我会出现段错误 set (CMAKE_CXX_STANDARD 17) 我认为 any_cast 之一是在 nullptr 和段错误上调用的。 我将使用 C++ 14,它编译时不会出现段错误。

回答 1 投票 0

在avro-maven-plugin生成的类中添加注释

我正在使用avro-maven-plugin从AVSC文件生成Java类,我想在变量名上添加注释@JsonProperty。 我想了解如何在...中执行 record.vm 文件

回答 1 投票 0

非公开课程增强切换

有时,第 3 方库包含返回您无法直接引用的非公共类的 API。 org.apache.avro.generic.GenericRecord.get() 就是这样的一个例子,它有时可以

回答 1 投票 0

监听 KafkaAvro 格式事件时 KafkaListener 出现 CompletionException 错误

我在使用 KafkaListener 侦听来自 Azure EventHub 的 Avro 格式事件时收到此 CompletionError。错误日志: java.util.concurrent.CompletionException: java.lang.NoClassDefFoundError...

回答 1 投票 0

当您没有 Java POJO 时,反序列化 avro 消息的预期结果是什么?

假设我有许多 avro 架构定义:(i) Event1、(ii) Event2、(iii) EventWrapper。 EventWrapper 是一个具有一个字段(称为有效负载)的记录,该字段是 Event1、Event2 的并集。 我也...

回答 1 投票 0

Avro Schema,引用 json 文件中的枚举值

我正在为 kafka 主题定义一个带有 Enum 字段的 avro 模式。 avro 模式将上传到 kafka 模式注册表。 我在 github 存储库中有一个 json 文件,定义如下:

回答 1 投票 0

Avro Schema,参考 yaml 文件中的枚举值

我正在为 kafka 主题定义一个带有 Enum 字段的 avro 模式。 avro 模式将上传到 kafka 模式注册表。 我在 github 存储库中有一个 json 文件,定义如下:

回答 1 投票 0

如何将多个avro对象写入ByteArrayOutputStream

Avro 文档页面有一个将多个 avro 对象写入文件的示例: DatumWriter userDatumWriter = new SpecificDatumWriter(User.class); 数据文件写入器<...

回答 1 投票 0

Avro maven 插件无法重新定义类型

我在 quarkus 项目中使用 avro-maven-plugin: org.apache.avro avro-maven-插件 我在 quarkus 项目中使用 avro-maven-plugin: <plugin> <groupId>org.apache.avro</groupId> <artifactId>avro-maven-plugin</artifactId> <version>1.11.3</version> <configuration> ... </configuration> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>schema</goal> </goals> <configuration> <includes> <include>**/*.avsc</include> </includes> <imports> <import>A.avsc</import> <import>B.avsc</import> </imports> </configuration> </execution> </executions> </plugin> 问题是关于插件中的导入部分。 文档说导入的文件不应互相引用,但在我的情况下,文件 A 和 B 都需要导入,并且 B 引用 A。 据我了解,这是不可能的并且失败: [错误] 无法在项目上执行目标 io.quarkus.platform:quarkus-maven-plugin:3.6.6:dev (default-cli) :无法执行 mojo:目标 org.apache.avro:avro- 的执行为 null maven-plugin:1.11.3:架构失败:无法重新定义:-> [帮助 1] 有什么解决办法吗? 看起来问题出在 quarkus maven 插件上。 当作为 quarkus:dev 的一部分运行此 Maven 任务时,构建失败, 但仅使用 Maven 运行它就可以了。 检查您是否使用 quarkus-maven-plugin 来实现 generate-code 目标。在这种情况下,使用 Maven 编译进行构建将起作用(正如您所描述的),因为只会使用您定义的插件和配置。将 quarkus:dev 与上述 generate-code 目标一起使用也将开始编译 Avro 文件,但没有导入配置,因为使用了另一个插件。 由于您使用的是 Quarkus,我建议使用他们的 Avro 模式生成方式。在这种情况下,您需要在 Quarkus 配置文件中的 avro.codegen.avsc.imports 下列出导入。更多信息在 有关调整 avro 代码生成的 Quarkus 文档 ;)

回答 2 投票 0

KafkaListener 反序列化到 Avro POJO 类时出现“Caused by: org.springframework.messaging.converter.MessageConversionException”

我正在使用 Spring Boot 构建一个 Kafka 监听器/消费者,它消耗来自主题的 Avro 数据。 这是一些属性 spring.kafka.properties.spec.avro.reader=true spring.kafka.consumer.

回答 1 投票 0

Avro、架构演化、向后兼容性

Avro 规范声明使用可选字段扩展架构是向后兼容的。不幸的是,它不适用于我们的二进制流,我不知道如何修复它。我有

回答 1 投票 0

在 Confluence Control Center UI 中生成 Avro 消息

要开发数据传输应用程序,我需要首先定义键/值 avro 模式。在定义 avro 模式之前,生产者应用程序尚未开发。 我克隆了一个主题及其键/值 avro

回答 2 投票 0

将 Java POJO 转换为 Avro GenericRecord 时出错

我正在尝试将Java POJO类转换为Avro格式,以使用KafkaAvroSerializer将数据发送到Kafka消息代理。 我在将 Java POJO 类转换为

回答 1 投票 0

“类 java.time.LocalDate 无法转换为类 java.lang.Number”,在 Avro 中保存时,逻辑类型为日期,类型为 int

我正在尝试在 parquet 输出中保存 Avro 中存在的具有日期逻辑类型的字段(它在使用 int 作为数据类型保存时有效,但在尝试保存为日期逻辑类型时给出错误...

回答 2 投票 0

Apache Avro 不会将 BigDecimal 打印到 parquet 文件中 错误:java.math.BigDecimal 无法转换为 java.nio.ByteBuffer

我需要使用Java8中的apache-avro库创建镶木地板文件。使用 Maven 生成资源从“.avsc”文件自动创建的 POJO。但我在 BigDecimal 方面遇到了麻烦...

回答 1 投票 0

Flink 无法解析 DataStream API 中 Debezium 写入 Kafka 的 Avro schema

似乎没有解决方案可以自动将 Confluence SchemaRegistry 的最新 schema 与 Kafka-topic 中的数据同步。因此,我通过从 Confluence Schema Regi 复制来手动添加架构...

回答 1 投票 0

如何在Pyspark中读取Avro文件?

如何在 Jupyter Notebook 上读取 Pyspark 中的 Avro 文件?! 从 Spark 2.4 开始,Avro 是内置但外部的数据源模块。请按照“Apach...

回答 1 投票 0

如何读取Pyspark Jupiter笔记本中的Avro文件?

如何在 Jupyter Notebook 上读取 Pyspark 中的 Avro 文件?! 从 Spark 2.4 开始,Avro 是内置但外部的数据源模块。请按照“Apach...

回答 1 投票 0

从数据文件解析 Avro 架构

由于 avro 中的数据文件嵌入了该架构,因此读者不希望保留单独的 .avsc 文件来指定架构。我正在寻找一个以这种方式工作的 java 示例...

回答 1 投票 0

Avro:C++ 库支持 local-timestamp-millis 吗?

问题的简单版本是:C++ Avro 库是否支持逻辑类型 local-timestamp-millis? 更多细节: 我正在使用 Apache Avro C++ 库版本 1.11 并尝试创建...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.