0
當讀取是BigInt
類型的MySQL的列(例如BIGINT(21) UNSIGNED
下文),火花不能在下面的代碼段投java.math.BigDecimal
到String
:火花1.4.1:問題時讀取的MySQL BIGINT列
val driver = "com.mysql.jdbc.Driver"
val server = ...
val infoSchema = "INFORMATION_SCHEMA"
val port = 3306
val user = ...
val pw = ...
val dbUrl = s"jdbc:mysql://$server:$port/$infoSchema"
val dbProperties = new java.util.Properties()
dbProperties.setProperty("driver", driver)
dbProperties.setProperty("user", user)
dbProperties.setProperty("password", pw)
val schema = ...
val table = ...
val cols = sqlContext.read.jdbc(dbUrl, "COLUMNS", dbProperties)
.filter(col("TABLE_SCHEMA") === schema && col("TABLE_NAME") === table)
.map(_.getValuesMap[String](Seq("ORDINAL_POSITION", "COLUMN_NAME")))
.collect()
.toList
cols.map(e => e("COLUMN_NAME"))
cols.map(e => e("ORDINAL_POSITION")) // java.math.BigDecimal cannot be cast to java.lang.String
然而,當我做以下事情時,沒有問題:
val num = new java.math.BigDecimal(1)
num.toString
這是一個錯誤還是我錯過了什麼?