不支持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,谢谢你的建议。我会更新答案的。