Dataset и Dataframe стали предпочтительными интерфейсами работы со Spark. Во многом благодаря активной разработке оптимизатора запросов Catalyst. В докладе мы рассмотрим мотивацию создания Spark.SQL и поймем, почему он так критически важен для работы PySpark. А так же подробно разберем как устроен Catalyst изнутри и как можно расширить его функциональность.
4. 192.168.0.38 WARNING Something bad could
happen
192.168.0.88 INFO Just an info message
passing by
192.168.0.5 WARNING Something bad could
happen
192.168.0.36 ERROR When production
fails in despair,
whom you're gonna
call?
192.168.0.27 INFO Just an info message
passing by
12. case class Literal (value: Any, dataType: DataType)
extends LeafExpression with CodegenFallback
abstract class Attribute
extends LeafExpression with NamedExpression
with NullIntolerant
case class Add(left: Expression, right: Expression)
extends BinaryArithmetic with NullIntolerant
13. x + (1 + 2) Attrib(x) Add
Literal(1)Literal(2)
Add
16. SELECT country,
count(country) as messages
FROM table1 JOIN table2
WHERE table1.ip = table2.ip
AND table1.code != "INFO"
GROUP BY country
Scan
Join
Filter
Project
Aggregate
Scan
17. object PushDownPredicate extends Rule[LogicalPlan]
with PredicateHelper {
def apply(plan: LogicalPlan): LogicalPlan = plan transform {}
}
21. SELECT country,
count(country) as messages
FROM table1 JOIN table2
WHERE table1.ip = table2.ip
AND table1.code != "INFO"
GROUP BY country
Scan
Join
Filter
Project
Aggregate
Scan