【问题标题】:Error when using "Collect_List()" function in hive在 hive 中使用“Collect_List()”函数时出错
【发布时间】:2017-04-20 19:13:28
【问题描述】:

每当我在 Hive 上运行函数“collect_list”时,它总是会抛出一个错误:

Query ID = xxxxx
Total jobs = 1
Launching Job 1 out of 1
Failed to get session
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask

示例如下:

数据:

id    value
1       A
1       B
2       C
3       D

我在 hive 的终端上运行查询,这是我的查询:

SELECT id, collect_list(value) FROM something GROUP BY id;

我想要这样的结果:

id    value
1       A, B
2       C
3       D

在使用 collect_list 功能之前我需要配置一些东西吗? 谢谢。

【问题讨论】:

    标签: hadoop hive hiveql tez


    【解决方案1】:

    你应该按 id 分组

    SELECT collect_list(value) FROM something group by id;

    【讨论】:

    • 谢谢,但我已经试过了。我将编辑查询以使其清楚
    • 您在使用 mapred 引擎时看到同样的问题吗?
    【解决方案2】:

    Collect_list 使用 ArrayList,因此数据将按照添加时的顺序保存,为此,您需要在子查询中使用 SORT BY 子句,不要使用 ORDER BY,它会导致您的查询执行以非分布式方式。

    SELECT id, COLLECT_LIST(value)
    FROM (SELECT * FROM something SORT BY id, value DESC) x
    GROUP BY id;
    

    【讨论】:

    • 感谢您的回复。但是,当我尝试使用 SORT BY 时,错误仍然相同。我不知道这里出了什么问题
    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2016-11-08
    • 2019-05-24
    • 2013-03-18
    • 2016-02-07
    • 1970-01-01
    相关资源
    最近更新 更多