在表中插入行号

thtygnil  于 2021-06-28  发布在  Hive
关注(0)|答案(2)|浏览(390)

我正在尝试将行号插入表中。row_number()函数在执行select查询时起作用,但当我将其用作insert into table查询的一部分时,该查询不起作用。我也尝试过通过createtable作为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;

有什么建议吗?谢谢!
编辑:我正在使用hive1.1.0作为cdh5.4.8的一部分。

o8x7eapl

o8x7eapl1#

我试过你想做的事,而且很管用。以下是我的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               |
+------------+--------------+-----------------+--+
mqxuamgl

mqxuamgl2#

看起来这是因为存储格式是orc。将表设置为textfile,问题就消失了。

相关问题