我长期困扰一个问题。 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查询?我逐字逐句阅读了关于kafka连接器的presto文档,但仍无法得到解决方案。
答案 0 :(得分:0)
如果您事先知道数据的架构,则可以设置主题描述文件(Kafka教程的第5步和第6步):https://prestodb.io/docs/current/connector/kafka-tutorial.html#step-5-add-a-topic-decription-file。
基本上,这个主题描述文件是 int b = 9;
b = b + (b = 3);
System.out.println(b);
中的一个json文件,它将Kafka中的字段映射到Presto中的列。
注意:如果您使用RPM安装Presto,则需要在etc/kafka
中设置kafka.table-description-dir=/etc/presto/kafka
来更改主题说明目录。然后,您的表格描述文件应位于kafka.properties
。