Приемник Kafka JDBC не обрабатывает нулевые значения - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь вставить данные с помощью коннектора Kafka JDBC Sink, но мне возвращается это исключение.

org.apache.kafka.connect.errors.DataException: Invalid null value for required INT64 field

Записи имеют следующую схему:

[
  {
    "schema": {
      "type": "struct",
      "fields": [
        {
          "type": "int64",
          "field": "ID"
        },
        {
          "type": "int64",
          "field": "TENANT_ID"
        },
        {
          "type": "string",
          "field": "ITEM"
        },
        {
          "type": "int64",
          "field": "TIPO"
        },
        {
          "type": "int64",
          "field": "BUSINESS_CONCEPT"
        },
        {
          "type": "string",
          "field": "ETIQUETA"
        },
        {
          "type": "string",
          "field": "VALOR"
        },
        {
          "type": "string",
          "field": "GG_T_TYPE"
        },
        {
          "type": "string",
          "field": "GG_T_TIMESTAMP"
        },
        {
          "type": "string",
          "field": "TD_T_TIMESTAMP"
        },
        {
          "type": "string",
          "field": "POS"
        }
      ]
    },
    "payload": {
      "ID": 298457,
      "TENANT_ID": 83,
      "ITEM": "0-0-0",
      "TIPO": 4,
      "BUSINESS_CONCEPT": null,
      "ETIQUETA": "¿Cuándo ha ocurrido?",
      "VALOR": "2019-05-31T10:33:00Z",
      "GG_T_TYPE": "I",
      "GG_T_TIMESTAMP": "2019-05-31 14:35:19.002221",
      "TD_T_TIMESTAMP": "2019-06-05T10:46:55.0106",
      "POS": "00000000530096832544"
    }
  }
]

Как видите, значение BUSINESS_CONCEPT может быть null. Это единственное значение null, поэтому я предполагаю, что исключение связано с этим полем. Как я могу заставить раковину вставить значение как null?

1 Ответ

2 голосов
/ 05 июня 2019

Вам нужно изменить определение

{
  "type": "int64",
  "field": "BUSINESS_CONCEPT"
}

на

{
  "type": ["null", "int64"],
  "field": "BUSINESS_CONCEPT"
}

, чтобы обработать BUSINESS_CONCEPT как необязательное поле.

...