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` 的等价物

Apache Spark SQL 中的 MySQL `kill query` 等价物?

Python 等价于 R 的因子数据类型 [重复]

ACCESS,货币数据类型等价于具有啥属性的数据数字类型?

Sql 等价于 UInt16

大数据Spark DataFrame/DataSet常用操作