Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hive Hadoop配置单元-如何查询部分行_Hive - Fatal编程技术网

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;