spark(scala)在for循环中执行dataframe


0

我正在使用Spark 1.6.1版本。我需要在循环中执行 DataFrame 。

for ( i <- List ('a','b')){
 val i = sqlContext.sql("SELECT i, col1, col2 FROM DF1")}

我希望这个 DataFrame 执行两次(i=a和i=b)。

1 答案


0

你的代码几乎是正确的。

    我已经在你的for循环中使用了,所以不要在val i中使用它=

所以你的代码应该是:

for (i <- List ('a','b')) {
  val df = sqlContext.sql(s"SELECT $i, col1, col2 FROM DF1")
  df.show()
}

作者评论后编辑:

你可以用一个.map然后一个.reduceleft:

// All your dataframes
val dfs = Seq('a','b').map { i =>
  sqlContext.sql(s"SELECT $i, col1, col2 FROM DF1")
}

// Then you can reduce your dataframes into one
val unionDF = dfs.reduceLeft((dfa, dfb) =>
dfa.unionAll(dfb)
)


我来回答

写文章

提问题

面试题