В этом случае запрос val timestamp =spark.sql("select timestamp from tablea ")
возвращает новый фрейм данных, который выглядит как timestamp : org.apache.spark.sql.DataFrame = [timestamps: bigint]
. Вот почему вы не можете передать его в следующий запрос выбора.
Я вижу по крайней мере два способа решения этой проблемы:
1) Используйте объединение:
spark.sql("select a.col1 from tableb a join tablea b on a.timestamp = b.timestamp")
2) Преобразовать метку времени в строку:
val timestampString = "("+myTimestamp.collect.map(r => r(0)).mkString(",")+")"
spark.sql(s"select col1 from tableb where timestamp = $timestampString ")