Spark 时间数据类型等价于 MYSQL TIME
Posted
技术标签:
【中文标题】Spark 时间数据类型等价于 MYSQL TIME【英文标题】:Spark time datatype equivalent to MYSQL TIME 【发布时间】:2016-07-13 16:21:12 【问题描述】:我正在通过 JDBC 从 mysql 导入数据以触发,其中一列的时间类型(SQL 类型 TIME 和 JDBC 类型 java.sql.Time)具有较大的小时值(例如:168:03:01)。 Spark将它们转换为时间戳格式并在读取三位数小时时导致错误。如何处理Spark中的时间类型
【问题讨论】:
【参考方案1】:此时您最好的方法可能是在 Spark 实际读取数据之前转换数据并直接在您的应用程序中对其进行解析。 JDBC 数据源允许您将有效的子查询作为dbtable
选项或table
参数传递。这意味着您可以执行类似的操作:
sqlContext.read.format("jdbc").options(Map(
"url" -> "xxxx",
"dbtable" -> "(SELECT some_field, CAST(time_field AS TEXT) FROM table) tmp",
))
并使用一些内置函数组合在 Spark 中将其转换为适用于您的应用程序的类型。
【讨论】:
以上是关于Spark 时间数据类型等价于 MYSQL TIME的主要内容,如果未能解决你的问题,请参考以下文章
Spark SQL 中 MySQL `show processlist` 的等价物