Рассмотрим следующий запрос spark- sql:
Seq(("b", 2), ("d", 4), ("a", 1), ("c", 3))
.toDF("letter", "number")
.select($"letter")
.where($"number" > 1)
.show
Исходный запрос может быть даже разделен, и поведение остается:
val letters =
Seq(("b", 2), ("d", 4), ("a", 1), ("c", 3))
.toDF("letter", "number")
.select($"letter")
letters
.where($"number" > 1)
.show
Это выглядит как связанный к ленивой загрузке, но я точно не знаю, что здесь происходит.
Почему можно включить $"number"
в предложении where, когда должна остаться только буква?
РЕДАКТИРОВАТЬ 1 Вот объяснение:
letters.explain(true)
== Parsed Logical Plan ==
'Project [unresolvedalias('letter, None)]
+- Project [_1#76942 AS letter#76955, _2#76943 AS number#76956]
+- LocalRelation [_1#76942, _2#76943]
== Analyzed Logical Plan ==
letter: string
Project [letter#76955]
+- Project [_1#76942 AS letter#76955, _2#76943 AS number#76956]
+- LocalRelation [_1#76942, _2#76943]
== Optimized Logical Plan ==
LocalRelation [letter#76955]
== Physical Plan ==
LocalTableScan [letter#76955]