Проверка схемы многоуровневой цепочечной схемы - PullRequest
0 голосов
/ 18 мая 2018

Я хочу сделать три вещи

  1. Проверить JSON по JSON-схеме
  2. Создать JSON-схему в AVRO Преобразователь схемы
  3. Создать JSON-схему вКонвертер Hive Table

Проблема, с которой я сталкиваюсь, состоит в том, что схема имеет цепочку ссылок.Я пытаюсь использовать этот JSON Schema Validator, который разрешает ссылки и проверяет, но в настоящее время получает некоторые ошибки.Но я не смог найти библиотеку для 2-го и 3-го задания.

И я должен создать процессоров Nifi для них.Я сделал это для первого.

Одна из моих идей - использовать Inline Parser для определения схем и создания одной большой схемы и использовать ее для задач и, надеюсь, всегопотом будет работать бесперебойно.

Любые предложения о том, что является хорошим подходом для решения этих проблем.Одна из схем прилагается.Любая помощь будет оценена.

{
  "id": "/schemas/bi/events/identification/carrier",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Users Carrier Identified",
  "description": "A successfully identified carrier of a user",
  "type": "object",
  "definitions": {
    "carrier_identification_result": {
      "type": "object",
      "properties": {
        "mno": {
          "type": "string",
          "title": "Mobile network operator",
          "description": "The Mobile network operator",
          "example": "Telekom"
        },
        "mvno": {
          "type": "string",
          "title": " Mobile virtual network operator",
          "description": "The Mobile virtual network operator.",
          "example": "Mobilcom-Debitel"
        },
        "mcc": {
          "type": "string",
          "title": "Mobile Country Code",
          "description": "The Mobile Country Code as defined in the ITU-T Recommendation E.212",
          "example": "262"
        },
        "mnc": {
          "type": "string",
          "title": "Mobile Network Code",
          "description": "The Mobile Network Code as defined in the ITU-T Recommendation E.212",
          "example": "01"
        },
        "country": {
          "type": "string",
          "title": "The code ISO 3166-1 alpha 2 for the country",
          "example": "DE"
        }
      },
      "required": [
        "mno",
        "country"
      ]
    }
  },
  "allOf": [
    {
      "$ref": "../identification_service.json"
    },
    {
      "properties": {
        "type": {
          "constant": "identification.carrier",
          "example": "identification.carrier"
        },
        "event_data": {
          "allOf": [
            {
              "$ref": "../identification_service.json#/definitions/event_data"
            },
            {
              "type": "object",
              "properties": {
                "result": {
                  "$ref": "#/definitions/carrier_identification_result"
                },
                "required": [
                  "result"
                ]
              }
            }
          ]
        }
      }
    }
  ]
}
...