Я предполагаю, что если их физический план выполнения точно такой же, производительность будет такой же. Итак, давайте проведем тест на Spark 2.2.0:
scala> import spark.implicits._
import spark.implicits._
scala> case class Record(column1: String, column2: String)
defined class Record
scala> val table = List(Record("foo", "value"), Record("bar", "notvalue")).toDF
table: org.apache.spark.sql.DataFrame = [column1: string, column2: string]
scala> table.createOrReplaceTempView("table")
scala> val a = spark.sql("SELECT column1 from TABLE where column2 = 'value'")
a: org.apache.spark.sql.DataFrame = [column1: string]
scala> val b = table.filter(table("column2") === "value").select(col("column1"))
b: org.apache.spark.sql.DataFrame = [column1: string]
scala> a.explain()
== Physical Plan ==
*Project [column1#41]
+- *Filter (isnotnull(column2#42) && (column2#42 = value))
+- LocalTableScan [column1#41, column2#42]
scala> b.explain()
== Physical Plan ==
*Project [column1#41]
+- *Filter (isnotnull(column2#42) && (column2#42 = value))
+- LocalTableScan [column1#41, column2#42]
Похоже, что нет никакой разницы ...