2016-08-24 93 views
0

我試圖在行中插入行號。 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 –

回答

0

OK看起來這是因爲存儲格式爲ORC。將表格設置爲TEXTFILE並且問題消失。

1

我試過你想做的事情,它正在工作。這裏是我的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