Hive 将字符串的配置单元数组转换为int数组

Hive 将字符串的配置单元数组转换为int数组,hive,hiveql,Hive,Hiveql,在配置单元中,我有一个列为字符串数据类型的表,它包含一组数字,比如标记。所以我想应用一些算术运算,比如加法,所以我使用了split命令,它返回数组。Bt我不能对数组进行加法,我想我需要转换成数组来应用任何算术运算。我用命令跟着 select sum(a) from (select split(marks, ':') as a from tbl) b; 我试图将它转换到数组中,但bt不起作用,因此出现了一些错误。我试着听从命令 select sum(a) from (select cast(sp

在配置单元中,我有一个列为字符串数据类型的表,它包含一组数字,比如标记。所以我想应用一些算术运算,比如加法,所以我使用了split命令,它返回数组。Bt我不能对数组进行加法,我想我需要转换成数组来应用任何算术运算。我用命令跟着

select sum(a) from (select split(marks, ':') as a from tbl) b;
我试图将它转换到数组中,但bt不起作用,因此出现了一些错误。我试着听从命令

select sum(a) from (select cast(split(marks, ':') as a array<int>) from table) b;
select sum(a) from (select cast(b) as array<int> from (select split(marks, ':') as b from tbl) c) d;
请给我建议解决这个问题的办法。。以及如何将数组强制转换为数组

您可以使用以下方法:

select sum(cast(a as int)) from TableName;

你可以这样做,希望这能有所帮助

Select 
 sum(a), 
 sum(b), 
 sum(c), 
 sum(d)
From
(Select
  CAST(Split(marks,':')[0] AS bigint) AS a, 
  CAST(Split(marks,':')[1] AS bigint) AS b,
  CAST(Split(marks,':')[2] AS bigint) AS c, 
  CAST(Split(marks,':')[3] AS bigint) AS d
From
Table) split_data
Group by <some column>

你能提供你的输入样本吗?这样就很容易帮助您标记45:52:56:74 85:65:63:42 63:52:43:68列为字符串数据类型,表名为tblYou可以做CASTSplitmarks,“:”[0]为bigint,CASTSplitmarks,”:“[1]为bigint,CASTSplitmarks,”:“[2]为bigint,CASTSplitmarks,”:“[3]正如Bigint所回答的一样:它不起作用,我认为它会给classCastException,因为a是一个数组,所以我们不能转换为int。你可以使用这个:选择a,sumcasta AS int作为TableName横向视图中的标记之和分解拆分标记,,:“t1作为一个