Hive 我在选择配置单元中的结构数组时遇到问题

Hive 我在选择配置单元中的结构数组时遇到问题,hive,hiveql,Hive,Hiveql,我已经阅读了网站上的所有示例,但没有一个适合我。我添加了砖厂UDF: 创建临时函数collect_struct作为“brickhouse.udf.collect.CollectUDAF”,并 我使用了来自和的示例 我的SQL: 我总是会遇到同样的错误: 失败:ClassCastException org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector 不能投靠 org.apache.hadoop.hi

我已经阅读了网站上的所有示例,但没有一个适合我。我添加了砖厂UDF: 创建临时函数collect_struct作为“brickhouse.udf.collect.CollectUDAF”,并

我使用了来自和的示例

我的SQL:

我总是会遇到同样的错误:

失败:ClassCastException org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector 不能投靠 org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector


有什么想法吗?

我使用的是Hive版本1.1.0,能够创建一个结构数组,而不需要Brickhouse jar文件的UDF。试试这个

SELECT house_id ,
       collect_list(named_struct("first_name", first_name, "last_name", last_name))
FROM house
GROUP BY house_id;

1   [{"first_name":"Bob","last_name":"jones"},{"first_name":"Jenny","last_name":"jones"}]   
2   [{"first_name":"Sally","last_name":"johnson"}]  
3   [{"first_name":"John","last_name":"smith"},{"first_name":"Barb","last_name":"smith"}]   

请将您的完整堆栈跟踪与错误共享这是我得到的唯一错误:请转到您的JobTracker并跟踪您的hive作业的jobid。找到其中的日志,它应该会显示在不同节点上为不同尝试收集的详细日志。当你能找到他们时发布!配置单元不创建作业-它会立即失败:配置单元>选择房屋id>,从测试>按房屋id分组中收集名为first\u name、first\u name、last\u name、last\u name>;失败:ClassCastException org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector无法强制转换为org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector hive>您解决了吗?我也看到了同样的问题。这完全有效。如上所述,不需要使用breakhouse jar文件
create temporary function collect as 'brickhouse.udf.collect.CollectUDAF';

CREATE TABLE test ( <br>
house_id bigint,<br>
first_name string,<br>
last_name string<br>
);

INSERT INTO test VALUES<br>
(1,"Bob","jones"),<br>
(1,"Jenny","jones"),<br>
(2,"Sally","johnson"),<br>
(3,"John","smith"),<br>
(3,"Barb","smith");

select house_id<br>
      ,collect(named_struct("first_name", first_name, "last_name", last_name))<br>
from test<br>
group by house_id;
SELECT house_id ,
       collect_list(named_struct("first_name", first_name, "last_name", last_name))
FROM house
GROUP BY house_id;

1   [{"first_name":"Bob","last_name":"jones"},{"first_name":"Jenny","last_name":"jones"}]   
2   [{"first_name":"Sally","last_name":"johnson"}]  
3   [{"first_name":"John","last_name":"smith"},{"first_name":"Barb","last_name":"smith"}]