【发布时间】:2010-11-28 06:58:01
【问题描述】:
过去我曾经使用在 MySQL 上运行的 OLAP 多维数据集构建 WebAnalytics。 现在,我使用的 OLAP 多维数据集只是一个大表(好吧,它的存储比那更智能),其中每一行基本上是一个测量值或一组测量值的聚合。每个度量都有一堆维度(即哪个页面名称、用户代理、ip 等)和一堆值(即有多少浏览量、多少访问者等)。
您在这样的表上运行的查询通常采用以下形式(元 SQL):
SELECT SUM(hits), SUM(bytes),
FROM MyCube
WHERE date='20090914' and pagename='Homepage' and browser!='googlebot'
GROUP BY hour
因此,您可以使用上述过滤器获得所选日期的每个小时的总数。 一个问题是,这些多维数据集通常意味着全表扫描(各种原因),这意味着您可以制作这些东西的大小(以 MiB 为单位)受到实际限制。
我目前正在学习 Hadoop 等的来龙去脉。
在 BigTable 上将上述查询作为 mapreduce 运行看起来很简单: 只需将“小时”作为键,在地图中过滤并通过对值求和来减少。
您能否在 BigTable 类型的系统上“实时”(即通过用户界面并且用户尽快得到答案)而不是批处理模式运行我上面显示的查询(或至少具有相同的输出) ?
如果没有;在 BigTable/Hadoop/HBase/Hive 等领域中做这种事情的合适技术是什么?
【问题讨论】:
标签: hadoop olap mapreduce hbase hive