1. 首页 > 科技

hive 调用python 写的udf 报错 return code 20003 from org.apache.hadoop.hive.ql.exec.mr.

hive 调用python 写的udf 报错 return code 20003 from .apache.hadoop.hive.ql.exec.mr.MapRedTask?

hive 调用python 写的udf 报错

你把print写在try里面当然会少数据。你应该try访问fields数组并更新fields[2]的值。另一方面,从功能点上来说,使用SQL函数nvl或coalesce就能实现,没必要写个UDF来实现,你这样做增加额外的IO消耗和工作量。如果一定要写UDF,建议少用print,改用标准输出实现:sys.stdout.write()。

hive报错FAILED: Execution Error, return code 2 from .apache.hadoop.hive.ql.exec.mr.MapRedTask

首先,code 2 经常是再试一次就好了。

如果不好的话,你提供的信息不足以排错,需要详细的错误栈

hive运行时报错

一般这个问题是hive调用hadoop的时候datanode写不了数据导致的。因为格式化了namenode,所以datanode里的数据都要清掉,否则datanode中记录的version号与namenode中不一样,就会无法使用旧数据且不能写入新数据。清datanode时在linux下直接去设置的数据存放目录,把文件夹删除就行了。

namenode尽量不要格式化。

return code 2 from .apache.hadoop.hive.ql.exec.mr.mapredtask 这个是什么错

hive的jdbc包,jar包名字大概是hive-jdbc.jar,你找找hive包下带jdbc的看看。