我一直在使用 mysql 进行所有数据存储和查询。但是现在表格大小变得如此之高,有时需要几个小时才能获得结果。我已采取一切可能的措施,例如优化查询和正确索引表。
所以我一直在考虑用druid。我之前没有与德鲁伊合作过。我想我必须将所有表、数据从 mysql 导入 druid。我不明白我应该从哪里开始。因此,如果有人在任何形式的指导方面帮助我,我将不胜感激。提前致谢。
首先请注意,Druid 会摄取时间序列数据,因此您的每一行数据都必须有一个时间戳。如果可能,请继续阅读。
将数据输出到 CSV 或 TSV。这是批量摄取支持的两种格式。因此,您的数据将如下所示:
2013-08-31T01:02:33Z,"someData","true","true","false","false",57,200,-143
2013-08-31T03:32:45Z,"moreData","false","true","true","false",459,129,330
...
然后,您可以创建一个索引任务,该任务具有一个 firehose 部分,您可以在其中指定文件、格式和列的位置:
"firehose" : {
"type" : "local",
"baseDir" : "my/directory/",
"filter" : "my.csv",
"parser" : {
"timestampSpec" : {
"column" : "timestamp"
},
"data" : {
"type" : "csv",
"columns" : ["timestamp","data1","data2","data3",...,"datan"],
"dimensions" : ["data1","data2","data3",...,"datan"]
}
}
}
请注意对时间戳列的特殊处理。
现在运行索引服务(Druid 文档包含有关如何启动您需要的集群的信息)并将任务提供给它,如使用索引服务批量摄取部分中所述。数据将被摄取并处理成您可以查询的 Druid 段。
首先,我不认为 druid 作为存储更好,当我们说它是一个实时查询和处理工具时更准确。此外,我更喜欢使用 hive+hdfs 组合来替换你的 mysql,因为你的表的大小在增加。更重要的是,druid 可以将 hdfs 作为其深度存储