mta*_*riq 4 hadoop aggregate olap-cube elasticsearch
我正在使用Analytic of events,我使用hadoop处理日志并将一些结果存储在Mysql中.由于日志不断出现,因此可伸缩性问题现在无法正常工作.
我们需要显示每年,每月,每周,每天,每小时的统计数据以及过滤功能我们的样本可以为10万用户增长,每个小时每小时使用20个网站
100,000(用户)*20(独特网站)*2(位置)*24 (小时)= 96,000,000(每天最多9600万条记录)
我们的表看起来像
event_src_id,时间,用户,网站,位置,一些统计数据
一些查询示例是
1) select website, sum(stats), count(distinct(user_id)) from table group by website;
2) select website, sum(stats), count(distinct(user_id)) from table where YEAR(Time) = 2009 group by website, MONTH(Time);
3) select website, sum(stats), count(distinct(user_id)) from table group by website where event_src_id=XXXXXXXXXXX;
4) select website, sum(stats), count(distinct(user_id)) from table group by website where time > 1 jan 2014 and time <=31 jan 2014;
5) select website, location, sum(stats), count(distinct(user_id)) from table group by website, location;
6) select website, sum(stats) as stats_val from table group by website order by stats_val desc limit 10;
select location, sum(stats) as stats_val from table group by location order by stats_val desc limit 10;
7) delete from table where event_src_id=XXXXXXXXXXX; (may delete all 96M records)
Run Code Online (Sandbox Code Playgroud)
我试过Hadoop弹性搜索,它似乎插入部分可以修复,我更担心阅读部分.聚合框架似乎给了一些希望,但我不能按照查询一个工作.如何分组,总和和同时分明?我如何才能最好地将Elasticsearch与Hadoop一起使用,并为基于OLAP的quires提供可扩展性和性能.任何帮助将不胜感激.
首先,我不认为使用ElasticSearch进行类似OLAP的查询是一个好主意.我建议你使用一些类似Dremel的技术(Impala,TEZ,Storm等),它们支持你指定的sql.它有一些优点,如:
不要误会我的意思,我喜欢ElasticSearch/Logstash/Kibana,但是对于日志收集和可视化.当然可以进行一些高级查询,但它有一些我在个人项目中发现的限制.
另外考虑使用Kibana,它是ElasticSearch中数据统计的一个很好的工具,你可以用它做很多事情.
以下是您请求的一些查询示例(我没有测试过):
1)
{
"aggs": {
"website": {
"terms": {
"field": "website"
},
"aggs": {
"sum_stats": {
"sum": {
"field": "stats"
},
"aggs": {
"distinct_user": {
"cardinality": {
"field": "user_id",
"precision_threshold": 100
}
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
2-6是相似的,使用来自1)的东西与不同的过滤器,如下所示:
{
"aggs": {
"your_filter": {
"filter": {
"term": {"event_src_id" : "XXXXXXXXXXX"}
}
},
"aggs": {
"website": {
"terms": {
"field": "website"
},
"aggs": {
"sum_stats": {
"sum": {
"field": "stats"
},
"aggs": {
"distinct_user": {
"cardinality": {
"field": "user_id",
"precision_threshold": 100
}
}
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
7)删除很容易
"query" : {
"term" : { "event_src_id" : "XXXXXXXXXXX" }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2046 次 |
| 最近记录: |