为什么不使用avro默认值?(使用avro-python)

艾诺·古尔丁

我正在使用Avro(使用python库)对一些数据进行序列化,并且我很难确定如何使“默认”值起作用。

我有这个架构:

{
    "type": "record",
    "fields":[
        {"name": "amount", "type": "long"},
        {"name": "currency", "type": "string", "default": "EUR"}
    ],
    "name": "Monetary",
}

因此,据我所知,我可以传递金额而不输入货币,货币字段将采用“ EUR”值。但是,如果在编写时未传递“ currency”字段,则会收到错误消息avro.io.AvroTypeException: The datum { ... } is not an example of the schema xxx...

如果我将currency字段的类型替换为union ["string", "null"],那么数据将被序列化,而currency为null。

因此,似乎根本没有考虑“默认”值。

我想念什么?默认值是否适用于基本类型?

提前致谢

埃利亚胡·麦克卢夫(Eliyahu Machluf)

这是avro规范的相关引用

 default: A default value for this field, used when reading instances that lack this field (optional)

当您尝试读取使用一个模式编写的实例并将其转换为使用另一模式编写的实例时,将使用“默认值”字段。如果第一个模式中不存在该字段(因此实例缺少此字段),则您获得的实例将采用第二个模式的默认值。

没错!

当您使用相同的架构读取/写入实例时,不会使用“默认值”

因此,以您的示例为例,当您将货币字段设置为默认值时,如果您尝试读取使用旧模式编写的不包含货币字段的实例,则获取的实例将包含您在处定义的默认值您的架构。

值得一提的是,当使用联合时,默认值仅指联合的第一种类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么熊猫不使用默认的python'and'和'or'?

来自分类Dev

Python MySQL:使用默认值选择

来自分类Dev

为什么FreezeGun不使用SQLAlchemy默认值?

来自分类Dev

出于好奇:为什么python3不使用__dict__作为默认的相等实现?

来自分类Dev

使用python将avro数据写入kafka

来自分类Dev

为什么 sys.stdout(在 python 中)没有恢复到默认值的默认方法

来自分类Dev

python *运算符,使用默认值创建列表

来自分类Dev

Windows Powershell 使用 python Ping 而不是默认值

来自分类Dev

使用默认值生成 Python 3 注释的代码

来自分类Dev

为什么kafka-avro-console-producer不遵守该字段的默认值?

来自分类常见问题

为什么此数据不是python中avro模式的示例?

来自分类Dev

为什么此数据不是python中avro模式的示例?

来自分类Dev

当在Python中将参数指定为None时,让函数使用其默认值作为参数的好方法是什么?

来自分类Dev

为什么多次调用该函数时会覆盖为Python 3函数设置的默认值?

来自分类Dev

Python:为什么动态添加的__repr__方法不会覆盖默认值

来自分类Dev

为什么Spring的JDBC模板不使用表的默认值

来自分类Dev

为什么不使用strip()时会出现错误?(Python)

来自分类Dev

为什么不使用Python Tkinter Canvas Scroll?

来自分类Dev

为什么Python for循环不使用while循环循环

来自分类Dev

Python:为什么不使用 datetime.fromordinal 计算年龄?

来自分类Dev

使用Hadoop流进行avro转换的python脚本

来自分类Dev

如何使用Python在Kafka中生成Tombstone Avro记录?

来自分类Dev

Emacs 24.3 python:无法猜测python-indent-offset,使用默认值4

来自分类Dev

使用argparse根据标志覆盖变量,如果未提供args,则使用默认值(python)

来自分类Dev

为什么使用指针而不是直接实例化对象时不使用类成员的默认值?

来自分类Dev

Sublime Text 3不使用默认python

来自分类Dev

为什么在实现中允许使用与在接口上定义的默认值不同的默认值?

来自分类Dev

函数python的默认值

来自分类Dev

Java:为什么未使用XX:SurvivorRatio的默认值?

Related 相关文章

  1. 1

    为什么熊猫不使用默认的python'and'和'or'?

  2. 2

    Python MySQL:使用默认值选择

  3. 3

    为什么FreezeGun不使用SQLAlchemy默认值?

  4. 4

    出于好奇:为什么python3不使用__dict__作为默认的相等实现?

  5. 5

    使用python将avro数据写入kafka

  6. 6

    为什么 sys.stdout(在 python 中)没有恢复到默认值的默认方法

  7. 7

    python *运算符,使用默认值创建列表

  8. 8

    Windows Powershell 使用 python Ping 而不是默认值

  9. 9

    使用默认值生成 Python 3 注释的代码

  10. 10

    为什么kafka-avro-console-producer不遵守该字段的默认值?

  11. 11

    为什么此数据不是python中avro模式的示例?

  12. 12

    为什么此数据不是python中avro模式的示例?

  13. 13

    当在Python中将参数指定为None时,让函数使用其默认值作为参数的好方法是什么?

  14. 14

    为什么多次调用该函数时会覆盖为Python 3函数设置的默认值?

  15. 15

    Python:为什么动态添加的__repr__方法不会覆盖默认值

  16. 16

    为什么Spring的JDBC模板不使用表的默认值

  17. 17

    为什么不使用strip()时会出现错误?(Python)

  18. 18

    为什么不使用Python Tkinter Canvas Scroll?

  19. 19

    为什么Python for循环不使用while循环循环

  20. 20

    Python:为什么不使用 datetime.fromordinal 计算年龄?

  21. 21

    使用Hadoop流进行avro转换的python脚本

  22. 22

    如何使用Python在Kafka中生成Tombstone Avro记录?

  23. 23

    Emacs 24.3 python:无法猜测python-indent-offset,使用默认值4

  24. 24

    使用argparse根据标志覆盖变量,如果未提供args,则使用默认值(python)

  25. 25

    为什么使用指针而不是直接实例化对象时不使用类成员的默认值?

  26. 26

    Sublime Text 3不使用默认python

  27. 27

    为什么在实现中允许使用与在接口上定义的默认值不同的默认值?

  28. 28

    函数python的默认值

  29. 29

    Java:为什么未使用XX:SurvivorRatio的默认值?

热门标签

归档