在 HIVE 中运行 UDF 以进行自定义反序列化时出现 OWN_TASK_FAILURE。

Posted

技术标签:

【中文标题】在 HIVE 中运行 UDF 以进行自定义反序列化时出现 OWN_TASK_FAILURE。【英文标题】:OWN_TASK_FAILURE while running UDF in HIVE for custom deserialization. 【发布时间】:2017-05-17 14:08:21 【问题描述】:

我正在编写一个配置单元脚本来从源中提取数据并将其添加到不同的目标。存储在源中的数据采用自定义格式。因此,我使用 Hive UDF 来获取数据,对其进行反序列化并返回 List<String>(我已经尝试过 List<org.apache.hadoop.io.Text>)。

我创建了一个带有 4 个字符串参数的 Hive 表 (HIVE_TABLE) 并运行以下 hive 查询。

> INSERT OVERWRITE TABLE HIVE_TABLE SELECT udfFunction(colName)[0], udfFunction(colName)[1], udfFunction(colName)[2], udfFunction(colName)[3] from sourceTable;

其中“udfFunction”是我的 customFunction,它返回 List<String>,“colName”将序列化数据存储在 sourceTable(另一个 hive 表)中。

执行上述脚本后,出现以下异常。

Container exited with a non-zero exit code 255 ]]], Vertex did not succeed due to OWN_TASK_FAILURE, failedTasks:1 killedTasks:0, Vertex vertex_1489044803200_0651_1_00 [Map 1] killed/failed due to:OWN_TASK_FAILURE]DAG did not succeed due to VERTEX_FAILURE. failedVertices:1 killedVertices:0

有人能解释一下我们什么时候得到 OWN_TASK_FAILURE 异常以及上述策略出了什么问题吗?

【问题讨论】:

【参考方案1】:

尝试将mr设置为执行引擎:

set hive.execution.engine=mr;

有时很难使用tez 进行调试。

【讨论】:

以上是关于在 HIVE 中运行 UDF 以进行自定义反序列化时出现 OWN_TASK_FAILURE。的主要内容,如果未能解决你的问题,请参考以下文章

我们可以从 Hive 中的自定义 UDF 运行查询吗?

Hive从入门到精通8:Hive自定义函数(UDF)

[Hive]Hive自定义函数UDF

Hive与MapReduce相关排序及自定义UDF函数

HIVE 编写自定义函数UDF

Hive自定义UDF函数