Hive &引用;输入字符串的NumberFormatException“;蜂箱
我正在尝试运行一个类似于下面代码的配置单元SQLHive &引用;输入字符串的NumberFormatException“;蜂箱,hive,hiveql,Hive,Hiveql,我正在尝试运行一个类似于下面代码的配置单元SQL insert into table FactUpdated select colm_name from ( select colmn_name, floor(rand()*116219) rand_key from FactTable limit 2942699191) line join DimTable on FactTable.rand_key = DimTable.id; 运行此查询时,我发现失败
insert into table FactUpdated
select colm_name
from
(
select colmn_name, floor(rand()*116219) rand_key
from FactTable limit 2942699191) line
join DimTable
on FactTable.rand_key = DimTable.id;
运行此查询时,我发现失败:输入字符串的NumberFormatException:“2942699191”
我觉得hive中的limit子句在它可以接受的值方面有一些限制
有人能帮我解答这个问题吗
PS:Hive版本1.2.1.2.4应为整数 2^31-1有效
select 1
limit 2147483647
;
2^31超出范围,返回与您得到的相同错误
select 1
limit 2147483648
;
公共类LimitOperator extends运算符实现可序列化的{private static final long serialVersionUID=1L;
受保护的瞬态整数限制。。。
yes这很好,有没有办法更改limit的数据类型或使用任何重载类?limit在源代码中定义为int
(请参阅更新的答案)。在任何情况下,您的请求似乎没有多大意义。您的动机是什么?我需要一个包含10B记录的表,并且我必须从脚本生成7B记录,其余的需要从同一个表复制回来。在这种情况下,我需要复制2.94B。这就是我试图实现的。包含10B记录的表=(7B来自脚本+3B(复制自先前生成的7B))-这是3B记录的双重性。您试图从10B记录中检索特定的3B记录?您怎么会认为限制会返回这些记录,而不是7B记录的一部分或两者的混合?
public class LimitOperator extends Operator<LimitDesc> implements Serializable { private static final long serialVersionUID = 1L;
protected transient int limit; ...