org.apache.avro.AvroTypeException:发现的时间很长,在尝试从kafka主题反序列化时期望合并

时间:2019-09-24 16:15:03

标签: java apache-kafka avro confluent

我有一个从MySQL数据库的binlog产生的kafka主题。它以avro格式序列化,当我尝试对该主题进行反序列化消耗时,出现以下异常:

ERROR org.apache.kafka.streams.errors.LogAndFailExceptionHandler Exception caught during Deserialization, taskId: 0_1, topic: mysql.db.couriers, partition: 1, offset: 14163362
org.apache.kafka.common.errors.SerializationException: Error deserializing Avro message for id 1541
Caused by: org.apache.avro.AvroTypeException: Found long, expecting union

这是我的avro文件:

{
  "type": "record",
  "name": "Envelope",
  "namespace": "mysql.db.couriers",
  "fields": [
    {
      "name": "before",
      "type": [
        "null",
        {
          "type": "record",
          "name": "Value",
          "fields": [
              {
                "name": "id",
                "type": "long"
              },
              {
                "name": "user_id",
                "type": "long"
              },
              {
                "name": "is_vip",
                "type": [
                  {
                    "type": "int",
                    "connect.default": 0,
                    "connect.type": "int16"
                  },
                  "null"
                ],
                "default": 0
              },
              {
                "name": "has_box",
                "type": [
                  {
                    "type": "int",
                    "connect.default": 0,
                    "connect.type": "int16"
                  },
                  "null"
                ],
                "default": 0
              },
              {
                "name": "is_priority",
                "type": [
                  {
                    "type": "int",
                    "connect.default": 0,
                    "connect.type": "int16"
                  },
                  "null"
                ],
                "default": 0
              },
              {
                "name": "tier",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "tiered_at",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTimestamp"
                  }
                ],
                "default": null
              },
              {
                "name": "tiered_till",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTimestamp"
                  }
                ],
                "default": null
              },
              {
                "name": "annual_turnover",
                "type": ["null", "long"], "default": null
              },
              {
                "name": "total_turnover",
                "type": ["null", "long"], "default": null
              },
              {
                "name": "loyalty_score",
                "type": ["null", "long"], "default": null
              },
              {
                "name": "total_score",
                "type": ["null", "long"], "default": null
              },
              {
                "name": "notifications",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "gender",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "birthday",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTimestamp"
                  }
                ],
                "default": null
              },
              {
                "name": "fathername",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "married",
                "type": [
                  "null",
                  {
                    "type": "int",
                    "connect.default": 0,
                    "connect.type": "int16"
                  }
                ],
                "default": 0
              },
              {
                "name": "military",
                "type": [
                  "null",
                  {
                    "type": "int",
                    "connect.default": 0,
                    "connect.type": "int16"
                  }
                ],
                "default": 0
              },
              {
                "name": "nationalNumber",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "nationalcardnumber",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "phone",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "mobile",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "address",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "workingtime",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "workingType",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "start_hour",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTime"
                  }
                ],
                "default": null
              },
              {
                "name": "end_hour",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTime"
                  }
                ],
                "default": null
              },
              {
                "name": "second_start_hour",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTime"
                  }
                ],
                "default": null
              },
              {
                "name": "second_end_hour",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTime"
                  }
                ],
                "default": null
              },
              {
                "name": "description",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "left",
                "type": [
                  {
                    "type": "int",
                    "connect.default": 0,
                    "connect.type": "int16"
                  },
                  "null"
                ],
                "default": 0
              },
              {
                "name": "verified_at",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTimestamp"
                  }
                ],
                "default": null
              },
              {
                "name": "plate_number",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "alternative_phone",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "score",
                "type": ["null", "int"], "default": null
              },
              {
                "name": "ban_id",
                "type": ["null", "long"], "default": null
              },
              {
                "name": "banned_at",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTimestamp"
                  }
                ],
                "default": null
              },
              {
                "name": "banned_till",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTimestamp"
                  }
                ],
                "default": null
              },
              {
                "name": "invitation_card",
                "type": [
                  {
                    "type": "int",
                    "connect.default": 0,
                    "connect.type": "int16"
                  },
                  "null"
                ],
                "default": 0
              },
              {
                "name": "received_invitation_transaction",
                "type": [
                  {
                    "type": "int",
                    "connect.default": 0,
                    "connect.type": "int16"
                  },
                  "null"
                ],
                "default": 0
              },
              {
                "name": "transport_types",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "last_filled_customer_id",
                "type": ["null", "long"], "default": null
              },
              {
                "name": "created_at",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTimestamp"
                  }
                ],
                "default": null
              },
              {
                "name": "updated_at",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTimestamp"
                  }
                ],
                "default": null
              },
              {
                "name": "deleted_at",
                "type": [
                  "null",
                  {
                    "type": "string",
                    "connect.version": 1,
                    "connect.name": "io.debezium.time.ZonedTimestamp"
                  }
                ],
                "default": null
              },
              {
                "name": "document_number",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "address_lat",
                "type": ["null", "double"], "default": null
              },
              {
                "name": "address_lng",
                "type": ["null", "double"], "default": null
              },
              {
                "name": "traffic_control",
                "type": [
                  {
                    "type": "int",
                    "connect.default": 0,
                    "connect.type": "int16"
                  },
                  "null"
                ],
                "default": 0
              },
              {
                "name": "credit",
                "type": ["null", "long"], "default": null
              },
              {
                "name": "found_us",
                "type": ["null", "string"], "default": null
              },
              {
                "name": "credit_autopay",
                "type": ["null", "long"], "default": null
              }
            ],
          "connect.name": "mysql.db.couriers.Value"
        }
      ],
      "default": null
    },
    {
      "name": "after",
      "type": [
        "null",
        "Value"
      ],
      "default": null
    },
    {
      "name": "source",
      "type": {
        "type": "record",
        "name": "Source",
        "namespace": "io.debezium.connector.mysql",
        "fields": [
          {
            "name": "version",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "server_id",
            "type": "long"
          },
          {
            "name": "ts_sec",
            "type": "long"
          },
          {
            "name": "gtid",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "file",
            "type": "string"
          },
          {
            "name": "pos",
            "type": "long"
          },
          {
            "name": "row",
            "type": "int"
          },
          {
            "name": "snapshot",
            "type": [
              {
                "type": "boolean",
                "connect.default": false
              },
              "null"
            ],
            "default": false
          },
          {
            "name": "thread",
            "type": [
              "null",
              "long"
            ],
            "default": null
          },
          {
            "name": "db",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "table",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "query",
            "type": [
              "null",
              "string"
            ],
            "default": null
          }
        ],
        "connect.name": "com.db.avro.io.debezium.connector.mysql.Source"
      }
    },
    {
      "name": "op",
      "type": "string"
    },
    {
      "name": "ts_ms",
      "type": [
        "null",
        "long"
      ],
      "default": null
    }
  ],
  "connect.name": "mysql.db.couriers.Envelope"
}

我有另一张桌子,大部分与此表相似,而另一张Kafka应用程序成功完成了相同的操作。我想知道我的问题是否与我的avro文件有关,或者它可能只是数据库中有问题的一行。如果是后者,Confluent API中是否有一种方法可以跳过这样的行,而不会引发异常而导致整个应用程序停止运行?

0 个答案:

没有答案