Catalyst ΠΈ Tungsten: ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π΄Π΅Π»Π°Π΅Ρ Ρ Π²Π°ΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ
Catalyst β ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ Π²Π°Ρ ΠΊΠΎΠ΄ Π² ΠΏΠ»Π°Π½ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π° ΡΠ΅ΡΡΡΠ΅ ΡΠ°Π³Π°: ΡΠ°Π·Π±ΠΎΡ ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΡΠ½ Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌΠΈ (analyzed plan), ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ (optimized plan), Π²ΡΠ±ΠΎΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² (physical plan), Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠ»Π°Π²Π½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ: ΠΏΡΠΎΡΠ°Π»ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ² β ΡΠΈΠ»ΡΡΡ ΡΠ΅Π·ΠΆΠ°Π΅Ρ Π² ΠΈΡΡΠΎΡΠ½ΠΈΠΊ, ΠΈ Parquet ΠΎΡΠ΄Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ; ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ β ΡΠΈΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΏΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ; ΡΠ²ΡΡΡΠΊΠ° ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π»ΠΈΡΠ½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΉ, ΠΏΠ΅ΡΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΠ΅ Π΄ΠΆΠΎΠΉΠ½ΠΎΠ² ΠΏΠΎ ΠΎΡΠ΅Π½ΠΊΠ°ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ². Tungsten β ΡΠ»ΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: ΠΎΠ½ Ρ ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π²ΠΎ Π²Π½Π΅Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ½ΠΎΠΉ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π²ΠΌΠ΅ΡΡΠΎ Java-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΡΠΎ ΡΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ ΡΠΎ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°, ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Java-ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠ΅Π»ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² (whole-stage codegen), ΡΠ±ΠΈΡΠ°Ρ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΡΠ²ΠΎΠ΄: DataFrame API ΠΈ Spark SQL ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡΡΡ, Π° Π²ΠΎΡ Python UDF Π΄Π»Ρ Catalyst β ΡΡΡΠ½ΡΠΉ ΡΡΠΈΠΊ, Π²ΠΎΠΊΡΡΠ³ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ.