不支持 java.util.Date
Posted
技术标签:
【中文标题】不支持 java.util.Date【英文标题】:java.util.Date is not supported 【发布时间】:2015-07-09 08:29:08 【问题描述】:我想将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
,它只是得到错误
[See nested exception: java.lang.UnsupportedOperationException: Schema for type java.util.Date is not supported
【问题讨论】:
尝试转换成java.sql.Date
如果我设置f.get("time").asInstanceOf[java.sql.Date]
,会得到java.util.Date cannot be cast to java.sql.Date
的错误
你不能直接转换它,但是一旦你有一个 sql.Date 你可以实例化一个 util.Date 从 sql.Date 字段手动读取
谢谢,它有效。 new java.sql.Date( f.get("time").asInstanceOf[java.util.Date].getTime )
【参考方案1】:
首先将 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
好。
【讨论】:
我宁愿使用java.sql.Timestamp
,因为java.sql.Date
在我的系统上似乎有日期粒度(即忽略一天中的时间)
@AndreHolzner,谢谢你的建议。我会更新答案。以上是关于不支持 java.util.Date的主要内容,如果未能解决你的问题,请参考以下文章