首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FastAvro模式问题

FastAvro模式问题
EN

Stack Overflow用户
提问于 2022-01-15 22:45:07
回答 1查看 525关注 0票数 0

我几乎完成了avro部分,但是我面前有一个巨大的挑战,那就是名称和名称空间。我尝试过这样做,无论我做了什么,我都经历过错误,甚至在引用像: docs.oracle.com/cd/E26161_02/html/GettingStartedGuide/avroschemas.html这样的文档时也是如此。

我的架构头是:https://i.ibb.co/TPH8shF/image.png

错误为:https://i.ibb.co/BCcX6Jd/image.png

但是,当我将模式添加到命名空间(因为它位于schemas文件夹中)时,会出现以下错误:https://i.ibb.co/Z62RwN2/image.png

你们中有人知道是什么导致了这个错误吗?谢谢!

这是文本版本,如果您需要的话:

代码语言:javascript
复制
src_data_path = 'data/processed/openflights/routes.jsonl.gz'
parsed_schema = load_schema("routes.avsc")
avro_output_path = results_dir.joinpath('results/routes.avro')
src_data_path = 'routes.jsonl'
with open(src_data_path, 'r') as f:
    avro_reader = json_reader(f, parsed_schema)        
    for record in avro_reader:
        print(record)
代码语言:javascript
复制
{
  "type": "record",
  "name": "routes",
  "namespace": "schemas",
  "fields": [
    {
      "name": "airline",
      "type": {
        "type": "record",
        "name": "Airline",
        "fields": [
          {
            "name": "airline_id",
            "type": "int",
            "default": -1
          },
          {
            "name": "name",
            "type": "string",
            "default": "NONE"
          },
          {
            "name": "alias",
            "type": "string",
            "default": "NONE"
          },
          {
            "name": "iata",
            "type": "string",
            "default": "NONE"
          },
          {
            "name": "icao",
            "type": "string",
            "default": "NONE"
          },
          {
            "name": "callsign",
            "type": "string",
            "default": "NONE"
          },
          {
            "name": "country",
            "type": "string",
            "default": "NONE"
          },
          {
            "name": "active",
            "type": "boolean",
            "default": false
          }
        ]
      },
      "default": "NONE"
    },
    {
      "name": "src_airport",
      "type": [
        {
          "type": "record",
          "name": "Airport",
          "fields": [
            {
              "name": "airport_id",
              "type": "int",
              "default": -1
            },
            {
              "name": "name",
              "type": "string",
              "default": "NONE"
            },
            {
              "name": "city",
              "type": "string",
              "default": "NONE"
            },
            {
              "name": "iata",
              "type": "string",
              "default": "NONE"
            },
            {
              "name": "icao",
              "type": "string",
              "default": "NONE"
            },
            {
              "name": "latitude",
              "type": "double"
            },
            {
              "name": "longitude",
              "type": "double"
            },
            {
              "name": "timezone",
              "type": "double"
            },
            {
              "name": "dst",
              "type": "string",
              "default": "NONE"
            },
            {
              "name": "tz_id",
              "type": "string",
              "default": "NONE"
            },
            {
              "name": "type",
              "type": "string",
              "default": "NONE"
            },
            {
              "name": "source",
              "type": "string",
              "default": "NONE"
            }
          ]
        },
        "null"
      ],
      "default": "NONE"
    },
    {
      "name": "dst_airport",
      "type": [
        "record",
        "null"
      ],
      "fields": [
      {
       "name": "source",
       "type": "string",
       "default": "NONE"
      }
      ],
      "default": "NONE"
    },
    {
      "name": "codeshare",
      "type": "boolean",
      "default": false
    },
    {
      "name": "stops",
      "type": "int",
      "default": 0
    },
    {
      "name": "equipment",
      "type": {
        "type": "array",
        "items": "string"
      }
    }
  ]
}
EN

回答 1

Stack Overflow用户

发布于 2022-01-16 21:08:19

dst_airport的定义中,您有以下内容:

代码语言:javascript
复制
    {
      "name": "dst_airport",
      "type": [
        "record",
        "null"
      ],
      "fields": [
      {
       "name": "source",
       "type": "string",
       "default": "NONE"
      }
      ],
      "default": "NONE"
    },

type of ["record", "null"]没有意义,因为您还没有定义一个名为"record“的命名类型(我不确定规范甚至允许您这样做。不管怎样,我认为应该是["Airport", "null"]

而且,这里的fields也没有什么意义。它不能是与fields结合的类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70726029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档