Hive/Impala 中的多维分析
Posted
技术标签:
【中文标题】Hive/Impala 中的多维分析【英文标题】:Multidimensional analysis in Hive/Impala 【发布时间】:2014-07-31 22:10:09 【问题描述】:我有一个非规范化的表说 Sales 看起来像:
销售密钥, SalesOfParts、SalesOfEquipments、CostOfSales 作为一些数字度量 行业、国家、州、销售区域、设备 ID、客户 ID、销售年份、销售月份和一些更相似的维度。 (共12个维度)
我需要支持对销售额的聚合查询,例如一年、一个月的总销售额……总成本等。 这些聚合也需要过滤,例如 2013 年 04 年的总销售额,属于 XYZ 客户的制造业。
我在 hive/impala 中有这些维度表和事实。
我不认为我可以在所有维度上制作一个立方体。我读了一篇论文来了解如何在多个维度上进行 OLAP: http://www.vldb.org/conf/2004/RS14P1.PDF
这基本上建议在小片段上实现多维数据集,并在查询跨越多个多维数据集时进行某种运行时计算。
我不确定如何在 Hive/Impala 中实现此模型。任何指针/建议都会很棒。
编辑:我在 Sales 表中有大约 1000 万行,并且维度无法与 100 相比,但大约为 12(可能高达 15),但每个都有很好的基数。
【问题讨论】:
也许值得一提的是数据的大小和查询所需的响应时间。参考论文是关于一个超过 100 个维度和相当少量 10e6 元组的场景。它适用于您的用例吗? 添加了数据大小...我还没有响应要求。 【参考方案1】:我会使用第 3 方软件构建多维数据集。例如,icCube 是一个内存中的 OLAP 服务器,它可以毫无问题地处理超过 12 个维度的 10mio 行。那么响应时间在所有维度上都是亚秒级的。从 Hive 10mio 行移出似乎不是问题(您可以为此目的使用 JDBC 驱动程序)。 icCube 专门设计用于处理适当的高稀疏性。
【讨论】:
好的。谢谢你。我会调查icCube。我对这个立方体计算是如何发生的感兴趣?只有 5 个基数的 12 列不是太大而无法计算和存储吗?再次感谢。 所有聚合都是即时发生的; icCube 将 10mio 行存储在 RAM 中。 12维就可以了。 如果它是关于存储在内存中,我想我已经有了一个工具。 Impala 也会这样做。只是澄清一下,没有正在发生的立方体化? 是的 icCube 是关于制作 OLAP 立方体的;聚合是在以亚秒级响应时间处理请求期间即时执行的。 icCube 支持标准 MDX 语言。以上是关于Hive/Impala 中的多维分析的主要内容,如果未能解决你的问题,请参考以下文章
分析视图中的多维数据集未在 Saiku Analytics 中显示