【发布时间】:2018-10-24 21:43:00
【问题描述】:
为什么下面的代码在return语句出现编译错误,
def getData(queries: Array[String]): Dataset[Row] = {
val res = spark.read.format("jdbc").jdbc(jdbcUrl, "", props).registerTempTable("")
return res
}
错误,
type mismatch; found : Unit required: Array[org.apache.spark.sql.Dataset[org.apache.spark.sql.Row]]
Scala 版本 2.11.11
Spark 版本 2.0.0
编辑: 实际案例
def getDataFrames(queries: Array[String]) = {
val jdbcResult = queries.map(query => {
val tablename = extractTableName(query)
if (tablename.contains("1")) {
spark.sqlContext.read.format("jdbc").jdbc(jdbcUrl1, query, props)
} else {
spark.sqlContext.read.format("jdbc").jdbc(jdbcUrl2, query, props)
}
})
}
在这里,我想返回迭代的组合输出,如 Array[Dataset[Row]] 或 Array[DataFrame](但 Dataframe 在 2.0.0 中不可用作为依赖项)。上面的代码有什么魔力吗?或者我该怎么做?
【问题讨论】:
-
registerTempTable返回Unit你最好删除registerTempTable并返回Dataframe,你为什么要返回Array[Dataset[Row]]? -
我有多个查询,我想创建一个数据框数组。但在问题中有一个错误编辑。
标签: scala apache-spark dataframe