【发布时间】:2016-08-08 16:55:10
【问题描述】:
在我的一个用例中,我正在尝试将基于 SQL 的传统仓储应用程序迁移到 Hive。我既不是 SQL 专家,也不是 HiveQL 专家。但是,我在创建表和将 csv 导入 hive 表方面取得了不错的成功。但后来我在 Hive QL 中复制基于 SQL 的分析查询时遇到了障碍。在其中一种分析算法中,我们需要创建多个变量并计算这些变量的总和,如下所示
var x = query1
var y = query2
var z = query3
var count = x + y + z
我正在努力在 HiveQL 中完成这项工作。
实际上,所有这些变量构成一列,另外一列是总计,其中包含 var1、var2 和 var3 的总和。是否有任何聚合函数之类的 sum 可以用来在特定行(即 var1、var2 和 var3)的列中添加值,并将它们存储在该行的总计列中?
是否可以执行以下操作。在创建表TEMP本身的过程中是不是不能告诉Hive?
INSERT INTO TABLE TEMP VALUES (1, 2, 1+2);
如果上述方法不可行,我尝试了以下解决方法
DROP TABLE T_TEMP;
DROP TABLE VARI;
CREATE TABLE VARI(value INT);
INSERT INTO TABLE VARI VALUES(1);
INSERT INTO TABLE VARI VALUES(2);
CREATE TABLE T_TEMP(var1 INT, var2 INT, total INT);
INSERT INTO TABLE T_TEMP
SELECT
1,
2,
sum(t.value)
from VARI as t;
我正在使用 Apache Hue,并且更喜欢在 Hue 提供的 Hive 编辑器中编写所有查询和语句,并最终触发查询。
除了a)写入临时列,b)直接在INSERT中添加值之外,是否还有其他可用的干净方法。我更喜欢变量 x、y、z 并能够将它们相加 count = x + y + z。
【问题讨论】: