我正在尝试在表格中插入行号。 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的一部分。
答案 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,问题就消失了。