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

#apache-kafka #apache-pinot #pinot

Вопрос:

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

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

Avro schema

 {
  "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 так, чтобы она указывала на источник потока (брокер Кафки в вашем случае), а также любые преобразования, которые вы, возможно, захотите сопоставить схеме Кафки (Avro или иным образом) со схемой в Pinot.

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

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

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

Прием Пищи Преобразует

Выравнивание JSON

Функции JSON

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

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

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