从数据库中获取多个列?

时间:2017-07-14 22:05:04

标签: scala apache-spark jdbc

我使用以下代码从数据库表中获取列列表。

val result =
    sqlContext.read.format("jdbc").options(Map(
      "driver" -> "com.microsoft.sqlserver.jdbc.SQLServerDriver",
      "url" -> jdbcSqlConn,
      "dbtable" -> s"...."
    )).load()
    .select("column1") // Now I need to select("col1", "col2", "col3")
    .as[Int]

现在我需要从数据库表中获取多个列,并且我希望结果是强类型的(DataSet?)。如何编写代码?

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题: -

val colNames = Seq("column1","col1","col2",....."coln")

val result = sqlContext.read.format("jdbc").options(Map(
  "driver" -> "com.microsoft.sqlserver.jdbc.SQLServerDriver",
  "url" -> jdbcSqlConn,
  "dbtable" -> s"...."
)).load().select(colNames.head, colNames.tail: _*)

val newResult = result.withColumn("column1New", result.column1.cast(IntegerType))
.drop("column1").withColumnRenamed("column1New", "column1")