在表中插入行号

时间:2016-08-24 13:28:06

标签: hive hiveql

我正在尝试在表格中插入行号。 row_number()函数在执行select查询时有效,但当我将它作为INSERT INTO TABLE查询的一部分使用时查询不起作用。我也尝试通过Create Table As Select,但我得到了同样看似普遍的错误。

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask (state=08S01,code=2)

示例:这不起作用。

INSERT INTO TABLE tablea
SELECT
column1,
column2,
row_number() over (order by column2 desc)
FROM
tableb;

示例:这确实有效

SELECT
column1,
column2,
row_number() over (order by column2 desc)
FROM
tableb;

任何指针?谢谢!

编辑:我使用Hive 1.1.0作为CDH 5.4.8的一部分。

2 个答案:

答案 0 :(得分:3)

我尝试过你想做的事情并且它正在发挥作用。这是我的HQL语句:

create table tablea (id int, string name);

insert into tablea values (1, 'test1');
insert into tablea values (2, 'test2');

create table tableb (id int, name string, row_num int);

insert into tableb select id, name, row_number() over ( order by name desc) from tablea;
select * from tableb;

<强>结果

+------------+--------------+-----------------+--+
| tableb.id  | tableb.name  | tableb.row_num  |
+------------+--------------+-----------------+--+
| 2          | test2        | 1               |
| 1          | test1        | 2               |
+------------+--------------+-----------------+--+

答案 1 :(得分:0)

好吧,这看起来是因为存储格式是ORC。将表设置为TEXTFILE,问题就消失了。