Hive Order by Not working

时间:2015-01-07 09:59:59

标签: mysql hadoop hive hiveql

查询:

没有功能的列:

从表订购 ACCOUNTID 选择 ACCOUNTID ;

(上述查询在HIVE和MYSQL中均正常工作)

包含功能的列:

从表格顺序中选择 concat(' test _',ACCOUNTID) ACCOUNTID;

在mysql中,上面的查询工作正常。

在hive中,抛出异常

失败:SemanticException [错误10004]: 第1:59行无效的表别名或列引用' ACCOUNTID': (可能的列名是:_c0)

Mysql:

按订单排序与函数中涉及的列一起正常工作

Hive:

排序使用函数中涉及的列

临时解决方案:

从表格 tempcolumn顺序选择 concat(' test _',ACCOUNTID)作为tempColumn ;

如果没有将列指定为tempcolumn,是否有可用的解决方案?

注意:

我想单独连接结果(test_ACCOUNTID)..而不将ACCOUNTID作为另一列公开

3 个答案:

答案 0 :(得分:2)

也许您也可以选择accountid列进行排序。

SELECT accountid,concat('test_',ACCOUNTID) from table order by accountid;

或者,重命名" concat(' test _',accountid)"像这样:“

SELECT concat('test_',ACCOUNTID) accountid from table order by accountid;

答案 1 :(得分:0)

取决于您尝试实现的目标。如果您希望您的连锁结果按帐户ID 的顺序显示,那么您可以在投影列表中公开ACCOUNTID

SELECT concat('test_',ACCOUNTID), ACCOUNTID FROM <table> ORDER BY ACCOUNTID

答案 2 :(得分:0)

据我所知,它是为函数表达式使用别名的唯一方法,并使用该字段名称使用“分组依据”,“排序依据”,“排序依据”等子句。