Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/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 具有大WHERE条件的配置单元查询_Hive_Hiveql - Fatal编程技术网

Hive 具有大WHERE条件的配置单元查询

Hive 具有大WHERE条件的配置单元查询,hive,hiveql,Hive,Hiveql,我正在编写一个配置单元查询,以从表中提取大约2000个唯一键 我一直收到这个错误-java.lang.StackOverflowerError 我的查询是基本查询,但如下所示: SELECT * FROM table WHERE (Id = 1 or Id = 2 or Id = 3 Id = 4) 我的WHERE子句一直到2000个唯一id,我收到上面的错误。有没有人知道一种更有效的方法来实现这一点,或者让这个查询工作起来 谢谢 使用Between子句而不是指定所有唯一ID: SELECT

我正在编写一个配置单元查询,以从表中提取大约2000个唯一键

我一直收到这个错误-java.lang.StackOverflowerError

我的查询是基本查询,但如下所示:

SELECT * FROM table WHERE (Id = 1 or Id = 2 or Id = 3 Id = 4)
我的WHERE子句一直到2000个唯一id,我收到上面的错误。有没有人知道一种更有效的方法来实现这一点,或者让这个查询工作起来


谢谢

使用Between子句而不是指定所有唯一ID:

SELECT ID FROM table WHERE ID BETWEEN 1 AND 2000 GROUP BY ID;
您可以使用拆分和分解将逗号分隔的字符串转换为行,然后在中或存在中使用

用于

使用存在


i您可以为这些id创建一个表,并在使用新表中的exist条件后仅获取您的特定id

是否有可能将所有id放入一个列表中,并将它们连接起来您可以将unque键放入另一个表中;SELECT*FROM表格,其中id在SELECT keys FROM uniq_id中,id实际上不按顺序排列。它们到处都是——比如123kdinwo2、234ksikj3等等。。。所以我不确定这是否有效
SELECT * FROM yourtable t WHERE
  t.ID IN
( 
 SELECT 
    explode(split('1,2,3,4,5,6,1998,1999,2000',',')) as id
)  ;
SELECT * FROM yourtable t WHERE
  EXISTS 
  ( 
   SELECT 1 FROM ( 
      SELECT 
        explode(split('1,2,3,4,5,6,1998,1999,2000',',')) as id
  ) s 

  WHERE s.id = t.id 
);