不支持java.util.Date

不支持java.util.Date,java,apache-spark,Java,Apache Spark,我想将RDD写入MYSQL,其中RDD包含java.util.Date类型 rdd.map(f=> FeatureData( f.get("name").toString, f.get("value").toString.toDouble, f.get("time").asInstanceOf[Date], f.get("period").toString)) .toDF() 在这个RDD

我想将
RDD
写入
MYSQL
,其中
RDD
包含
java.util.Date
类型

rdd.map(f=> FeatureData(
           f.get("name").toString, 
           f.get("value").toString.toDouble, 
           f.get("time").asInstanceOf[Date],
           f.get("period").toString))
    .toDF()
在这个
RDD
time
的值类型的键也是
java.util.Date
,它只得到
[请参阅嵌套异常:java.lang.UnsupportedOperationException:不支持java.util.Date类型的架构

首先将java.util.Date转换为java.sql.Date。然后使用java.sql.Date的数据运行sql。示例代码:

java.util.Date utilDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
更新:
AndreHolzner建议使用
java.sql.Timestamp
。我还没有尝试过,但一般来说
Timestamp
Date

好,如果我设置
f.get(“time”).asInstanceOf[java.sql.Date],试着将其转换成
java.sql.Date
,它将得到一个错误,
java.util.Date不能强制转换为java.sql.Date
您不能直接强制转换它,但是一旦您有了一个sql.Date,您就可以实例化一个util.Date,从sql.Date字段手动读取谢谢,它可以工作。
new java.sql.Date(f.get(“time”).asInstanceOf[java.util.Date].getTime)
我更愿意使用
java.sql.Timestamp
,因为
java.sql.Date
在我的时间上似乎具有日粒度(即忽略一天中的时间)system@AndreHolzner,谢谢你的建议。我会更新答案的。