在表格中插入行号
问题描述:
我试图在行中插入行号。 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的一部分。
答
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
您能否指定您遇到错误的配置单元版本? –
我完全忘了。我使用Hive 1.1.0作为CDH 5.4.8的一部分。 – Noy
我已经在Hive 1.2.1上执行了给定的脚本(在答案中)作为HDP 2.3的一部分,我没有CDH –