(Соединитель Presto Kafka) Как преобразовать неструктурированное сообщение в структурированное?

#apache-kafka #presto

#apache-kafka #presto

Вопрос:

Меня долгое время беспокоила проблема. Данные в kafka выглядят примерно следующим образом:

 presto:default> select _message from topic_2874_1 limit 5;

2016-10-24 17:12:39,1200032544,IRC7D184YIF6,a44fb5306d966921dc6b0faa5395e6662fc58c43,1477300352,5.1.6,02:00:00:00:00:00,223.104.10.244,4,CTRadioAccessTechnologyLTE,223.82.245.18,238,62,inews.gtimg.com,/newsapp_ls,200,SDWebImageDownloader,11092,0,0,1,,
2016-10-24 17:12:39,1200032544,IRC7D184YIF6,d41d8cd98f00b204e9800998ecf8427e36b64515,1477300347,5.1.6,02:00:00:00:00:00,183.38.234.248,4,WiFi,inews.gtimg.com,19,24,inews.gtimg.com,/newsapp_bt,200,QNImageLoaderRequest,51692,0,0,1,,
2016-10-24 17:12:40,1200032544,IRC7D184YIF6,4df4c5a34cca33c14ce9e351f82fba32cc5336b5,1477300359,5.1.6,02:00:00:00:00:00,123.138.243.146,4,WiFi,113.200.90.144,24,18,inews.gtimg.com,/newsapp_ls,200,SDWebImageDownloader,14922,0,0,1,,
2016-10-24 17:12:40,1200032544,IRC7D184YIF6,c32cedd56561780129d0967e1a7e6811d60f9ea4,1477300351,5.1.5,02:00:00:00:00:00,117.136.84.177,4,CTRadioAccessTechnologyLTE,183.232.121.140,227,1,r.inews.qq.com,/reportActualExpose,200,ASIFormDataRequest,29,0,0,1,,
  

Естественно, это не похоже на тип json; и каждое поле, разделенное запятой, скорее всего, не имеет одинаковой длины. Итак, как я могу преобразовать эти сообщения журнала в структурированные данные для будущих запросов SQL? Я прочитал документ presto о kafka connector слово за словом, но все еще не смог найти решение.

Ответ №1:

Если вы заранее знаете схему данных, вы можете настроить файл описания темы (шаги 5 и 6 руководства по Kafka):https://prestodb.io/docs/current/connector/kafka-tutorial.html#step-5-add-a-topic-decription-file.

По сути, файл описания этого раздела представляет собой файл json в etc/kafka , который сопоставляет поля в Kafka со столбцами в Presto.

Примечание: если вы используете RPM для установки Presto, вам нужно будет изменить каталог описания темы, установив kafka.table-description-dir=/etc/presto/kafka в kafka.properties . Затем файлы описания вашей таблицы должны быть расположены в /etc/presto/kafka .