Hive Hadoop配置单元-如何查询部分行
如果我有下表Hive Hadoop配置单元-如何查询部分行,hive,Hive,如果我有下表 table name : mytable columns : id, name, sex, age, score row1 : 1,Albert,M,30,70 row2 : 2,Scott,M,34,60 row3 : 3,Amilie,F,29,75 ... row100 : 100,Jim,M,35,80 我想选五次 1st iteration : row1 ~ row20 2nd iteration : row21 ~ row40 ... 5th iteration :
table name : mytable
columns : id, name, sex, age, score
row1 : 1,Albert,M,30,70
row2 : 2,Scott,M,34,60
row3 : 3,Amilie,F,29,75
...
row100 : 100,Jim,M,35,80
我想选五次
1st iteration : row1 ~ row20
2nd iteration : row21 ~ row40
...
5th iteration : row81 ~ row100
如何查询蜂巢?有任何已知的疑问吗?
下面返回所有100行
SELECT * FROM mytable;
但我真的希望每次只看到20行。它可以通过限制Myqsl中的偏移量轻松做到这一点。配置单元支持限制,但未抵消非100%确定 但您可以通过以下方式限制输出:
SELECT * FROM mytable
LIMIT 20;
它只会给出20条记录,但不会给出20-40条
您可以按蜂巢中的行数进行操作
下次您必须更改where子句中的条件
SELECT *,ROW_NUMBER over (Order by id) as rowid FROM mytable
where rowid > 20 and rowid <=40;
还可以使用文本文件传递rowid变量或设置变量 更新这个。以防其他人现在尝试此解决方案 对我来说,它只在行号后面加一个括号,在查询周围加一个新的SELECT语句,where子句作为别名“rowid”,在内部SELECT中不可用。我花了一段时间才弄明白
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER(Order by id) as rowid FROM mytable
) t1
WHERE rowid > 0 and rowid <= 20;
配置单元2.0支持偏移功能。或更高版本
您可以按如下方式查询上述需求
按id限制从mytable order中选择*0,20
按id限制从mytable order中选择*20,20
按id限制从mytable order中选择*40,20
按id限制从mytable order中选择*60,20
SELECT*FROM mytable order by id LIMIT 80,20//返回第81条到第100条记录
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER(Order by id) as rowid FROM mytable
) t1
WHERE rowid > 0 and rowid <= 20;
SELECT * FROM mytable LIMIT [offset,] row_count;