Вы не можете зациклить цикл данных, как вы указали в приведенном выше коде.Используйте цикл данных rdd.collect
для цикла данных.
import spark.implicits._
val df = Seq(("abc","a"), ("mno","b"), ("pqr","a"),("xyz","b")).toDF("AA", "BB")
df.registerTempTable("test")
df.rdd.collect.foreach(x => {
val BBvalue = x.mkString(",").split(",")(1)
var m = spark.sql(s"select * from test where BB = '$BBvalue'")
m.show()
})
Внутри цикла я использовал mkString
, чтобы преобразовать строку rdd в строку, а затем разделить значения столбца запятой и использовать индекс столбца для доступа кзначение.Например, в приведенном выше коде я использовал (1)
, что означает, что столбец BB
индекс столбца равен 2.
Пожалуйста, дайте мне знатьесли у вас есть какие-либо вопросы.