在表格中插入行号

问题描述:

我试图在行中插入行号。 row_number()函数在执行select查询时起作用,但当我将它用作INSERT INTO TABLE查询的一部分时,查询不起作用。我也尝试通过创建表作为选择,但我得到相同的看似通用的错误。在表格中插入行号

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的一部分。

+0

您能否指定您遇到错误的配置单元版本? –

+0

我完全忘了。我使用Hive 1.1.0作为CDH 5.4.8的一部分。 – Noy

+0

我已经在Hive 1.2.1上执行了给定的脚本(在答案中)作为HDP 2.3的一部分,我没有CDH –

OK看起来这是因为存储格式为ORC。将表格设置为TEXTFILE并且问题消失。

我试过你想做的事情,它正在工作。这里是我的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    | 
+------------+--------------+-----------------+--+ 
+0

我运行了这个脚本并且它可以工作(在第一行中交换名称和字符串)。我必须有另一个无关的错误。我会将其标记为答案。 – Noy