2017-07-14 56 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")