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 中显示

多维液相层析-串联质谱在多肽分析中的应用

如何将 Azure 流分析中的“类字典”结构转换为带有 javascript UDF 的多维数组?

商务智能数据仓库 ( 多维数据模型 | 多维数据分析 )

Kylin系列-使用Saiku+Kylin构建多维分析OLAP平台