将数据从mysql导入到德鲁伊

时间:2014-01-17 08:02:49

标签: mysql druid

我一直在使用mysql进行所有数据存储和查询。但是现在表格大小已经变得非常高,有时需要几个小时才能得到结果。我已采取一切可能的措施,如优化查询和正确索引表。

所以我一直在考虑使用德鲁伊。我之前没有和德鲁伊合作过。我想我必须将所有表格,数据从mysql导入到德鲁伊。我无法理解我应该从哪里开始。所以,如果有人帮助我提供任何指导,我将非常感激。提前致谢。

2 个答案:

答案 0 :(得分:9)

首先请注意,德鲁伊会提取时间序列数据,因此数据的每一行都必须有一个时间戳。如果可能,请继续阅读。

将您的数据输出到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
...

然后你可以创建一个index task,它有一个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"]
     }
   }
 }

请注意对timestamp列的特殊处理。

现在运行索引服务(Druid docs包含有关如何启动您需要的群集的信息)并按照Batch Ingestion Using the Indexing Service部分所述将任务提供给它。数据将被摄取并处理为您可以查询的德鲁伊片段。

答案 1 :(得分:0)

首先,我不认为德鲁伊作为存储更好地工作,当我们说它是一个实时查询和处理工具时更准确。 而且,我更喜欢使用hive + hdfs组合来替换你的mysql,因为你的表的大小越来越大。更重要的是,德鲁伊可以将hdfs作为其深层存储