Exception in thread “main” java.lang.IllegalArgumentException: Cannot format given Object as a Date

运行下面代码出现上面这个错误:

package hive;
import java.text.SimpleDateFormat;
import org.apache.hadoop.hive.metastore.api.Date;
import org.apache.hadoop.hive.ql.exec.UDF;

public class myprint extends UDF {
       public String evaluate1()  {
           SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
           return df.format(new Date());
       }
       //主方法测试一下是否可以输出,代码是否有问题
       public static void main (String[] args)  {
    	   myprint sm=new myprint();
    	   System.out.println(sm.evaluate1());
       }
}

在这里插入图片描述

我反复找原因,找到了下面这个原因:

把import org.apache.hadoop.hive.metastore.api.Date;去掉
改成:import java.util.Date;通用的这个就不会报错了

代码如下:

package hive;
import java.text.SimpleDateFormat;
import org.apache.hadoop.hive.ql.exec.UDF;
import java.text.SimpleDateFormat;
public class myprint extends UDF {
       public String evaluate1()  {
           SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
           return df.format(new Date());
       }
       //主方法测试一下是否可以输出,代码是否有问题
       public static void main (String[] args)  {
    	   myprint sm=new myprint();
    	   System.out.println(sm.evaluate1());
       }
}

在这里插入图片描述
也可以用下面这个获取系统的当前时间:

package hive;
import java.text.SimpleDateFormat;
import org.apache.hadoop.hive.metastore.api.Date;
import org.apache.hadoop.hive.ql.exec.UDF;

public class hivedate extends UDF{
	 public Date evaluate1()  {
         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         //return df.format(new Date());
		return null ;
         
     }

这个就不要用到这个了,可以到系统给的包

import java.util.Date;

问题解决了,不过上面是我解决问题的方法,和大家的不一样,大家可以认真思考,找到自己问题所在。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐