Как ввести данные в apache pinot из темы kafka с помощью схемы avro?

Я начал изучать apache pinot, есть несколько запросов относительно схемы apache pinot. Я хочу понять, как apache pinot работает с темой Kafka, которая имеет схему AVRO (схема включает вложенный объект, массив объектов и т. Д.), Потому что я не нашел ни одного ресурса или примера, который показывает, как мы можем вводить данные с помощью Kafka, у которого есть avro схема с ним.

Согласно моему пониманию apache pinot, мы должны предоставить плоскую схему или другой вариант для вложенного объекта Json, мы можем использовать функцию преобразования. Есть ли какой-нибудь Kafka connect для pinot для инъекции данных?

Схема avro

      {
  "namespace" : "my.avro.ns",
  "name": "MyRecord",
  "type" :  "record",
  "fields" : [
     {"name": "uid", "type": "int"},
     {"name": "somefield", "type": "string"},
     {"name": "options", "type": {
        "type": "array",
        "items": {
            "type": "record",
            "name": "lvl2_record",
            "fields": [
                {"name": "item1_lvl2", "type": "string"},
                {"name": "item2_lvl2", "type": {
                    "type": "array",
                    "items": {
                        "type": "record",
                        "name": "lvl3_record",
                        "fields": [
                            {"name": "item1_lvl3", "type": "string"},
                            {"name": "item2_lvl3", "type": "string"}
                        ]
                    }
                }}
            ]
        }
     }}
  ]
} 

Сообщение Кафки Авро:

      {
 "uid": 29153333,
 "somefield": "somevalue",
 "options": [
   {
     "item1_lvl2": "a",
     "item2_lvl2": [
       {
         "item1_lvl3": "x1",
         "item2_lvl3": "y1"
       },
       {
         "item1_lvl3": "x2",
         "item2_lvl3": "y2"
       }
     ]
   }
 ]
}

1 ответ

Вам не нужен отдельный коннектор для приема данных в Pinot из Kafka или других потоковых систем, таких как Kinesis, Apache Pulsar. Вы просто настраиваете таблицу Pinot так, чтобы она указывала на источник потока (брокер Kafka в вашем случае), вместе с любыми преобразованиями, которые вы можете захотеть сопоставить схему Kafka (Avro или иначе) со схемой в Pinot.

То, как вы должны хранить данные в Pinot (схема таблицы в Pinot), больше зависит от того, как вы хотите запрашивать их.

  1. Если вас интересует только конкретное поле внутри вложенного поля, вы можете настроить простое преобразование приема, чтобы извлечь это поле во время приема и сохранить его как столбец в Пино.

  2. Если вы хотите сохранить весь вложенный большой двоичный объект JSON для столбца, а затем запросить этот большой двоичный объект, вы можете использовать индексирование JSON.

Вот несколько указателей для вашей справки:

Преобразование приема

Сглаживание JSON

Функции JSON

Индексирование JSON

Пино Документы

Вы также можете присоединиться к сообществу Slack Apache Pinot, чтобы ответить на вопросы, связанные с Apache Pinot.

Другие вопросы по тегам