Apache Avro 框架可以在序列化期间处理参数化类型吗?

2023-12-28

Apache Avro 可以在序列化期间处理参数化类型吗?

当我尝试序列化使用泛型的实例时,我看到 Avro 框架抛出此异常 -

org.apache.avro.AvroTypeException: Unknown type: T
    at org.apache.avro.specific.SpecificData.createSchema(SpecificData.java:255)
    at org.apache.avro.reflect.ReflectData.createSchema(ReflectData.java:514)
    at org.apache.avro.reflect.ReflectData.createFieldSchema(ReflectData.java:593)
    at org.apache.avro.reflect.ReflectData$AllowNull.createFieldSchema(ReflectData.java:75)
    at org.apache.avro.reflect.ReflectData.createSchema(ReflectData.java:472)
    at org.apache.avro.specific.SpecificData.getSchema(SpecificData.java:189)

我试图序列化的类看起来像这样

public class Property<T> {

   private T propertyValue;

}

我正在尝试根据传入的 POJO 实例动态生成模式。我的序列化代码如下所示 -

ByteArrayOutputStream os = new ByteArrayOutputStream();
ReflectData reflectData = ReflectData.AllowNull.get();
Schema schema = reflectData.getSchema(propertyValue.getClass());
DatumWriter<T> writer = new ReflectDatumWriter<T>(schema);
Encoder encoder = EncoderFactory.get().jsonEncoder(schema, os);
writer.write(propertyValue, encoder);

我的代码中触发异常的行:

Schema schema = reflectData.getSchema(propertyValue.getClass());

对于没有参数化类型的类,相同的代码可以正常工作。


由于问题,自 1.7.7 版起,Avro 无法为参数化类型生成架构AVRO-1571 https://issues.apache.org/jira/browse/AVRO-1571。解决方法是显式指定参数化类型的架构,以便 Avro 不会尝试生成它:

private static final String PROPERTY_STRING_SCHEMA =
    "{ " +
      "\"type\": \"record\", " +
      "\"name\": \"PropertyString\", " +
      "\"fields\": [" +
        "{ \"name\": \"propertyValue\", \"type\": \"string\" }" +
      "] " +
    "}";

@AvroSchema(PROPERTY_STRING_SCHEMA)
private Property<String> password; 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Avro 框架可以在序列化期间处理参数化类型吗? 的相关文章

  • HibernateTemplate 可以与 EntityManager 共存吗?

    我们有一个 spring 3 应用程序 它仍然使用已弃用的HibernateTemplate为了持久性并希望迁移到更现代的 JPAEntityManager 是否可以在迁移过程中并行使用这两个 API 甚至可能在单个事务中同时使用 以便我们
  • 无法禁用 Firestore 中的离线数据

    从我的数据中删除数据后Firestore Database 这需要我的Android app一段时间后才意识到数据已被删除 我认为这是由于自动数据缓存而发生的 我的应用程序与离线使用无关 我想禁用此功能 我已将其添加到我的自定义中Appli
  • 使用 ScriptEngine 从 JavaScript 调用 Java 方法

    我正在使用 ScriptEngine 运行 JavaScript 我希望 JavaScript 脚本能够调用 myFunction 其中 myFunction 是我的给定类中的一个方法 我知道可以将 importPackage 用于标准 J
  • 在 libgdx 中批处理多维数据集时出现问题

    我正在尝试开发一款游戏 在屏幕上渲染多达 300 个立方体 为每个多维数据集创建新的 modelInstance 时 modelBatch 的性能非常糟糕 据我所知 没有 3d 批处理可以将所有立方体批处理到一次绘制调用 所以我拼命地尝试以
  • 有没有一种干净的方法将泛型类型的类分配给变量?

    鉴于此代码 List
  • rmi类找不到异常

    我使用 java rmi 编写了一个简单的项目并导出到可执行 jar 文件 当我尝试运行它时 有时会出现异常 有时会起作用 当我指定 Djava rmi server codebase file serverClasses 时 它似乎没有正
  • 如何用 Java 制作 Windows 7 工具提示

    我一直在网上到处寻找 但没有找到这个小问题的答案 在 Windows 7 中 我认为在 Vista 中 您有一个漂亮的圆形银色工具提示 它看起来比旧的黄色盒装蹩脚工具提示要好得多 下面的 How do I make a Windows 7
  • Cognito SRP 身份验证 JAVA SDK

    我正在尝试使用 Cognito 验证 Java 应用程序 我在Python中使用了warrant库 效果非常好 但我现在想在java中做同样的事情 我的 Python 函数用于身份验证warrant https github com cap
  • 在 Selenium Grid 中注册 PhantomJS 节点时出错

    我有以下问题 我成功启动了 Selenium Grid hub java jar selenium server standalone 2 53 0 jar role hub 之后我尝试使用以下命令启动 PhantomJS 节点 phant
  • 具有多个字符串的列表视图

    我正在尝试创建一个包含多个字符串的列表视图 现在我有一个可以实现的功能 while i lt 10 GETS DATA FROM WEBPAGE ETC a DATAFROMWEBPAGE1 b DATAFROMWEBPAGE2 c DAT
  • 不带破折号的 CliBuilder 参数

    使用 Groovy CliBuilder 理想情况下我希望有一个命令行 如下所示 MyProgram groovy CommandName arg1 arg2 arg3 是否可以使用 CliBuilder 解析提取 CommandName
  • Jetty 提供静态内容所需的最少文件集?

    背景 免责声明 I have veryJava 经验很少 我们之前在 Ant 构建期间使用了 Jetty 6 的包装版本来处理按需静态内容 JS CSS 图像 HTML 因此我们可以使用 PhantomJS 针对 HTTP 托管环境运行单元
  • BODMAS系统的加法和减法

    我一直在构建一个简单的公式计算器 但一直被加法和减法困扰 正如您应该知道的 在计算方程时 您遵循优先级算术规则 即括号 顺序 幂函数 除法 乘法 加法和减法 问题是加法和减法具有相同的优先级 因此您可以从左到右阅读 到目前为止 这是我的代码
  • CompletableFuture SupplyAsync

    我刚刚开始探索 Java 8 的一些并发特性 让我有点困惑的一件事是这两个静态方法 CompletableFuture
  • Android Studio错误的含义:未注释的参数覆盖@NonNull参数

    我正在尝试 Android Studio 创建新项目并添加默认值后onSaveInstanceState方法创建 MyActivity 类 当我尝试将代码提交到 Git 时 我收到一个我不明白的奇怪错误 代码是这样的 我得到的错误是这样的
  • 在服务器上创建 Zip 文件并使用 java 下载该 zip

    我从 mkyong 获得了以下代码 用于在本地压缩文件 但是 我的要求是在服务器上压缩文件并需要下载它 任何人都可以帮忙吗 代码写入zip文件 public void zipFiles File contentFile File navFi
  • 如何使用现代.fxml和controller.java在javafx 2.x中制作自动完成组合框[重复]

    这个问题在这里已经有答案了 如何使用现代 fxml 和controller java 在 javafx 2 x 中制作一个类似的自动完成组合框 就像制作这个一样 http blog ngopal com np 2011 07 04 auto
  • 如何在 Android 应用程序退出之前进行一些清理?

    当我的 Android 应用程序终止时 是否有某种 onTerminate 方法可以进行一些清理 我想清除一些 SharedPreferences 我有一个活动 它保持几个数字的运行平均值 并将其存储在 SharedPreference 中
  • Java Media API:java media api 下载

    我在哪里可以找到javax media jar 文件 在sun站点它下载一个安装程序 有没有可用的java媒体jar 没有 javax media 具体是 jar 文件 该包位于 jmf jar 文件中 您需要运行安装程序并取出 jar 或
  • 如何读取FTL文件中的JSONArray?

    我在我的 Java 文件中硬编码了以下 JSON 对象 JSONObject notificationInfoJson new JSONObject notificationInfoJson put title Payment Receiv

随机推荐

  • CMake:将 ELF 嵌入可执行文件

    我有一个项目需要访问嵌入到可执行文件中的 ELF 文件特别部分 https stackoverflow com questions 2627004 embedding binary blobs using gcc mingw 我之前手工制作
  • 交易ID设置正确,但稍后仅显示提交

    我的代码给出了正确的响应并正确设置了交易 ID 但是在屏幕上 我第一次提交时缺少ID 当我返回并再次提交时 屏幕上的ID就是第一笔交易的ID On the 首先提交 这被渲染为 MOBILE NUMBER 9129992929 OPERAT
  • 如何在 Hibernate 中限制数据库级别的用户访问

    The App 我需要实现一个可供不同用户使用的网络应用程序 每个用户对不同的表有不同的权限 例如 用户 A 可以看到表中的 名称 和 地址 字段Student 用户 B 可以看到表中的 姓名 和 电话号码 字段 但看不到 地址 Stude
  • 如何从 Python 中的元组中获取整数?

    我有一个包含两个数字的元组 我需要获取这两个数字 第一个数字是 x 坐标 第二个数字是 y 坐标 我的伪代码是我关于如何去做的想法 但是我不太确定如何让它工作 伪代码 tuple 46 153 string str tuple ss str
  • 使用 sass 连接字符串

    我想写一个像这样的 sass 循环 fractions for i from 1 through 4 fractions fractions 1fr grid i grid template columns fractions displa
  • Autofac - 如何创建带有参数的生成工厂

    我正在尝试使用 Autofac 创建一个 生成 工厂 它将根据枚举参数实时解决依赖关系 给定以下接口 类 public delegate IConnection ConnectionFactory ConnectionType connec
  • 如何使用 FileFields 限制 ModelForms 文件上传的文件类型?

    我的目标是将 Django ModelForm 上的 FileField 限制为 PDF 和 Word 文档 我在谷歌上搜索到的答案都涉及创建一个单独的文件处理程序 但我不确定如何在 ModelForm 的上下文中执行此操作 我可以使用 s
  • 限制 Magento SOAP 查询的结果集

    如何为 Magento SOAP 查询指定最大结果集 我正在通过 SOAP API 查询 Magento 以获取与给定状态匹配的订单列表 我们有一些远程主机需要很长时间才能返回列表 因此我想限制结果集 但我没有看到这方面的参数 orderL
  • 使用 underscore.js 迭代对象

    因此 我正在学习backbone js 并且目前正在使用下面的示例在视图中迭代一些模型 第一个片段有效 而另一个基于 underscore js 的片段则无效 为什么 1 Working this collection each funct
  • Selenium 与 chromedriver 根据“无头”参数给出不同的结果

    我一直在使用 Selenium Chromedriver 我注意到根据是否启用或禁用 headless 我得到了不同的结果 经过一番调查 我发现 无头 不包括Accept Language header 有没有办法手动将其添加到标题中 理想
  • SQL Server 代理 - 获取我自己的 job_id

    我正在运行安装了 Service Pack 1 的 SQL Server 2008 64 位开发人员版 我有一份 SQL Server 代理工作 在这个工作中 我想获取我自己工作的 job id 在 MSDN 上 http msdn mic
  • 在zsh中寻找ALT+LeftArrowKey解决方案

    I just recently switched from bash to zsh however I miss my Alt LeftArrowKey and Alt RightArrowKey to go back and forth
  • 如何创建不重复的随机数数组

    我想创建一个包含 0 到 20 之间 21 个值的数组 我希望它们是随机的 同时不重复 我知道如何创建 0 到 20 之间的随机数 0 rand RAND MAX 20 0 1 1 但我不知道如何创建这些数字 以便与以前的数字相比不会重复
  • substr_count 和一个作为针的数组

    如何使用 substr count 将数组作为针 像这样 substr count str array find this or find this 您可以使用 implode 创建数组的字符串并创建正则表达式之类的东西 array arr
  • 在 odoo 中添加 Many2many 字段后“关系已存在”

    我定义了以下两个 odoo ORM 模型 class Weekday models Model name ludwik offers weekday name fields Char class Duration models Model
  • iTunes connect 不允许我将自己添加为用户

    我正在 iTunes connect 中为客户开发一个应用程序 在他们的 iTunes connect 帐户下 我想将自己添加为用户 以便可以收到应用程序状态更新的电子邮件通知 当我尝试将自己添加为用户时 我收到以下消息 您输入的电子邮件地
  • 配置 jacksonObjectMapper 在 spring mvc 3 中不起作用

    我的目标是将 spring mvc 3 配置为不在 json 响应中返回 null 对象 我已经问过这个问题了如何配置 spring mvc 3 在 json 响应中不返回 null 对象 https stackoverflow com q
  • ASP.NET登录控件中的验证问题

    我的 Web 应用程序中有 ASP NET 登录控件 我使用了以下代码
  • 将 ActionResult 渲染为字符串 - 以错误的顺序出现

    我有一个尝试解决方案来渲染ActionResult到一个字符串 我通过传递我自己的内容来做到这一点HttpContext用我自己的替换输出文本编写器TextWriter 问题是这样的 元素的渲染顺序不正确 如果我通过直接通过浏览器查询来渲染
  • Apache Avro 框架可以在序列化期间处理参数化类型吗?

    Apache Avro 可以在序列化期间处理参数化类型吗 当我尝试序列化使用泛型的实例时 我看到 Avro 框架抛出此异常 org apache avro AvroTypeException Unknown type T at org ap