【问题标题】:I'm having trouble selecting into an ARRAY of STRUCTS in Hive我在选择 Hive 中的结构数组时遇到问题
【发布时间】:2018-05-08 17:04:19
【问题描述】:

我已阅读网站上的所有示例,但没有一个适合我。我添加了 Brickhouse UDFS:
create temporary function collect_struct as 'brickhouse.udf.collect.CollectUDAF'

CREATE TEMPORARY FUNCTION collect AS 'brickhouse.udf.collect.CollectUDAF'

我使用了来自Hive SELECT statement to create an ARRAY of STRUCTS
Hive select data into an array of structs 的示例

我的 SQL:

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;

我总是遇到同样的错误:

失败:ClassCastException org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector 不能转换为 org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector

有什么想法吗?

【问题讨论】:

  • 请与错误分享您的完整堆栈跟踪
  • 这是我得到的唯一错误:
  • 请转到您的 JobTracker 并跟踪您的 Hive 工作的 jobid。找到其中的日志,它应该向您显示在不同节点上为不同尝试收集的详细日志。找到它们时发布!
  • Hive 没有创建作业 - 它立即失败:hive&gt; select house_id &gt; ,collect(named_struct("first_name", first_name, "last_name", last_name)) &gt; from test &gt; group by house_id; FAILED: ClassCastException org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector cannot be cast to org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector hive&gt;
  • 你发现了吗?我遇到了同样的问题。

标签: hive hiveql


【解决方案1】:

我使用的是 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"}]   

【讨论】:

  • 这完全有效。如前所述,无需使用breakhouse jar 文件
猜你喜欢
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 2019-09-10
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多