#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), в большей степени зависит от того, как вы хотите запросить их.
- Если вас интересует только определенное поле внутри вложенного файла, вы можете настроить простое преобразование приема, чтобы извлечь это поле во время приема и сохранить его в виде столбца в Pinot.
- Если вы хотите сохранить весь вложенный большой двоичный объект JSON для столбца, а затем запросить большой двоичный объект, вы можете использовать индексацию JSON.
Вот несколько указаний для вашей справки:
Вы также можете рассмотреть возможность присоединения к сообществу Apache Pinot slack по вопросам, связанным с Apache Pinot.