Performance 黑斑羚上的立方体算子

Performance 黑斑羚上的立方体算子,performance,hadoop,cloudera,impala,presto,Performance,Hadoop,Cloudera,Impala,Presto,在Impala和PrestoDB之间进行基准测试时,我们注意到在Imapala中构建数据透视表非常困难,因为它不像Presto那样具有多维数据集操作符。以下是Presto中的两个示例: 多维数据集运算符为给定的一组列生成所有可能的分组集(即幂集)。例如,查询:` 相当于: 另一个例子是ROLLUP操作符。完整文档位于此处: 它不是静态的,因为PRESTO对整个查询执行一个表扫描-所以使用这个操作符,您可以在一个请求中构建透视表,Impala需要运行2-3个查询 在Impala instaead

在Impala和PrestoDB之间进行基准测试时,我们注意到在Imapala中构建数据透视表非常困难,因为它不像Presto那样具有多维数据集操作符。以下是Presto中的两个示例:

多维数据集运算符为给定的一组列生成所有可能的分组集(即幂集)。例如,查询:`

相当于:

另一个例子是
ROLLUP
操作符。完整文档位于此处:

它不是静态的,因为PRESTO对整个查询执行一个表扫描-所以使用这个操作符,您可以在一个请求中构建透视表,Impala需要运行2-3个查询


在Impala instaead 3中,有没有一种方法可以通过一次查询/表扫描来实现这一点?否则,在创建任何类型的数据透视表时,性能都会变得非常糟糕。

我们可以使用impala windo函数,但不是单列输出,而是3列

SELECT origin_state,
        destination_state,
        SUM(package_weight) OVER (PARTITION BY origin_state, destination_state) AS pkgwgrbyorganddest,
        SUM(package_weight) OVER (PARTITION BY origin_state) AS pkgwgrbyorg,
        SUM(package_weight) OVER (PARTITION BY destination_state) AS pkgwgrbydest
 FROM shipping;

我不确定这对您是否有帮助,但您将了解分析功能链接:
SELECT origin_state, destination_state, sum(package_weight)
FROM shipping
GROUP BY GROUPING SETS (
 (origin_state, destination_state),
 (origin_state),
 (destination_state),
 ());
SELECT origin_state,
        destination_state,
        SUM(package_weight) OVER (PARTITION BY origin_state, destination_state) AS pkgwgrbyorganddest,
        SUM(package_weight) OVER (PARTITION BY origin_state) AS pkgwgrbyorg,
        SUM(package_weight) OVER (PARTITION BY destination_state) AS pkgwgrbydest
 FROM shipping;