2017-07-14 60 views
0

我已經使用以下代碼從數據庫表中獲取列的列表。從數據庫中獲取多列?

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

這應該做的伎倆: -

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")