ΠΡΠΈΠ²Π΅Ρ, Π₯Π°Π±Ρ! ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ Π²Π°ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ
ΠΠ°Π½Π½ΡΠ΅, ΠΊΠ°ΠΊ ΠΈ Π½Π°Ρ ΠΎΠΏΡΡ, ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡΡΡΡ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ. Π§ΡΠΎΠ±Ρ Π½Π΅ ΠΎΡΡΡΠ°Π²Π°ΡΡ, Π½Π°ΡΠΈ ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠΈΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊ Π½ΠΎΠ²ΡΠΌ Π΄Π°Π½Π½ΡΠΌ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ β Π½ΠΎΠ²ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ Π²Π΅ΡΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π½ΡΡΠ΅ ΠΌΡ Π½Π΅ ΠΈΠΌΠ΅Π»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΡΠΈ ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°Π»ΠΎ ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΡ Π΅ΠΌ ΡΠ°Π±Π»ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ , ΠΊΠ°ΠΊ ΠΌΡ ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΡΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ Π½Π°Ρ ΠΊ Π²ΠΎΠΏΡΠΎΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡ Π΅ΠΌΠ°ΠΌΠΈ. ΠΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΠΈΠ·Π½Π΅Ρ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ ΡΡΡΡΠΊΡΡΡΠ° Π²Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ . Delta Lake ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ Π²Π½Π΅Π΄ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ΅ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡ Π΅ΠΌΠ°ΠΌΠΈ ΡΠ²ΠΎΠΈΡ ΡΠ°Π±Π»ΠΈΡ. ΠΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ (Schema Enforcement), ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎΡ Π½Π΅ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π°ΡΠΎΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ ΡΠ°Π±Π»ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π½Π΅Π½ΡΠΆΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ²ΠΎΠ»ΡΡΠΈΡ ΡΡ Π΅ΠΌΡ (Schema Evolution), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ Ρ ΡΠ΅Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΡΠ°. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ³Π»ΡΠ±ΠΈΠΌΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡ Π΅ΠΌ ΡΠ°Π±Π»ΠΈΡ
ΠΠ°ΠΆΠ΄ΡΠΉ DataFrame Π² Apache Spark ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡ
Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΡΠΌΡ Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΊΡΡ ββΠΊΠ°ΠΊ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
, ΡΡΠΎΠ»Π±ΡΡ ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Delta Lake ΡΡ
Π΅ΠΌΠ° ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON Π²Π½ΡΡΡΠΈ ΠΆΡΡΠ½Π°Π»Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ?
ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ (Schema Enforcement), ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡ Π΅ΠΌΡ (Schema Validation), ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΡΠΈΡΠ½ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Π² Delta Lake, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠΊΠ»ΠΎΠ½ΡΡ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΡ Π΅ΠΌΠ΅ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠ°ΠΊ ΠΈ Ρ ΠΎΡΡΠ΅Ρ Π½Π° ΡΡΠΎΠΉΠΊΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π² ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΌ ΡΠ΅ΡΡΠΎΡΠ°Π½Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π±ΡΠΎΠ½ΠΈ, ΠΎΠ½ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π΅ΡΡΡ Π»ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ Π΄Π°Π½Π½ΡΡ , Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ, Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² (Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π΅ΡΡΡ Π»ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ Β«Π±ΡΠΎΠ½ΡΒ»), ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ΅Ρ Π»ΡΠ±ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎ ΡΡΠΎΠ»Π±ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ Π² ΡΠΏΠΈΡΠΊΠ΅.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ?
Delta Lake ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΡ
Π΅ΠΌΡ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΡΠΎ ΡΡ
Π΅ΠΌΠΎΠΉ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΠΈΡΠΈ. ΠΡΠ»ΠΈ ΡΡ
Π΅ΠΌΠ° Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ°, Delta Lake ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ (Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ) ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ.
ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ Delta Lake ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°. ΠΠ°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΠΉ DataFrame:
- Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ Π² ΡΡ Π΅ΠΌΠ΅ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ. Π Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π²ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ β ΡΡΠΈΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ ΠΏΡΠΎΡΡΠΎ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Ρ Π½ΡΠ»Π΅Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
- Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅. ΠΡΠ»ΠΈ ΡΡΠΎΠ»Π±Π΅Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π°Π½Π½ΡΠ΅ StringType, Π½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΡΠΎΠ»Π±Π΅Ρ Π² DataFrame ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π°Π½Π½ΡΠ΅ IntegerType, ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ.
- Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠΌΠ΅Π½Π° ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΎΠΌ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΡΠΎΠ»Π±ΡΡ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ‘Foo’ ΠΈ ‘foo’, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅. Π₯ΠΎΡΡ Spark ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ ΡΠ΅ΠΆΠΈΠΌΠ΅, Delta Lake ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ΅Π³ΠΈΡΡΡ, Π½ΠΎ Π½Π΅ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ Π² ΡΠ°ΠΌΠΊΠ°Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΡΡ Π΅ΠΌΡ. Parquet ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ ΠΏΡΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΡΠΎΠ»Π±ΡΠ°. Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΈΡ ΠΏΠΎΡΠ΅ΡΠΈ (Ρ ΡΠ΅ΠΌ ΠΌΡ Π»ΠΈΡΠ½ΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Π² Databricks), ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅.
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ Delta Lake, ΠΊΠΎΡΠΎΡΠ°Ρ Π΅ΡΠ΅ Π½Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π° Π΄Π»Ρ ΠΈΡ ΠΏΡΠΈΠ½ΡΡΠΈΡ.
# Π‘Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ DataFrame ΡΡΡΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Delta Lake
loans = sql("""
SELECT addr_state, CAST(rand(10)*count as bigint) AS count,
CAST(rand(10) * 10000 * count AS double) AS amount
FROM loan_by_state_delta
""")
# ΠΡΠ²Π΅ΡΡΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ ΡΡ
Π΅ΠΌΡ DataFrame
original_loans.printSchema()
root
|-- addr_state: string (nullable = true)
|-- count: integer (nullable = true)
# ΠΡΠ²Π΅ΡΡΠΈ Π½ΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ DataFrame
loans.printSchema()
root
|-- addr_state: string (nullable = true)
|-- count: integer (nullable = true)
|-- amount: double (nullable = true) # new column
# ΠΠΎΠΏΡΡΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ DataFrame (Ρ Π½ΠΎΠ²ΡΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠΌ) Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ
loans.write.format("delta")
.mode("append")
.save(DELTALAKE_PATH)
Returns:
A schema mismatch detected when writing to the Delta table.
To enable schema migration, please set:
'.option("mergeSchema", "true")'
Table schema:
root
-- addr_state: string (nullable = true)
-- count: long (nullable = true)
Data schema:
root
-- addr_state: string (nullable = true)
-- count: long (nullable = true)
-- amount: double (nullable = true)
If Table ACLs are enabled, these options will be ignored. Please use the ALTER TABLE command for changing the schema.
ΠΠΌΠ΅ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ², Delta Lake Π½Π°Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡ Π΅ΠΌΡ ΠΈ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π·Π°ΠΏΠΈΡΡ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠΎΠ»Π±Π΅Ρ (ΠΈΠ»ΠΈ ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ) ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ, Spark Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΎΠ±Π΅ ΡΡ Π΅ΠΌΡ ΠΈΠ· ΡΡΠ΅ΠΊ ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ.
Π ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·Π° ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡ Π΅ΠΌΡ?
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠΎΠ³ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, ΠΎΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠ²ΡΠ°ΡΠ½ΠΈΠΊΠ° ΡΠΈΡΡΠΎΠ³ΠΎ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΡΠΎΠ² ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Ρ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅:
- ΠΠ»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
- BI Π΄Π°ΡΠ±ΠΎΡΠ΄Π°ΠΌ
- ΠΠ½Π°Π»ΠΈΡΠΈΠΊΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
- ΠΡΠ±ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΡΡΠ΅Π±ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠ³ΠΎ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ , ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡ Π΅ΠΌ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΊ ΡΡΠΎΠΌΡ ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌΡ Π±Π°ΡΡΠ΅ΡΡ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΡΠΎΡΡΡΡ βmulti-hopβ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π²Π½ΠΎΡΠΈΡ ΡΡΡΡΠΊΡΡΡΡ Π² ΠΈΡ
ΡΠ°Π±Π»ΠΈΡΡ. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ Π±ΠΎΠ»ΡΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ ΡΠΎ ΡΡΠ°ΡΡΠ΅ΠΉ
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°, Π½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ²Π°Ρ Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΡΡΡΠΈΡΡΡΡΠ΅ΠΉ, ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Π·Π°Π±ΡΠ»ΠΈ, ΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΡΠΎΠ»Π±Π΅Ρ Π²ΠΎ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΆΠΈΠΆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ ΡΠ°ΠΊΠΎΠΉ Π°ΠΆΠΈΠΎΡΠ°ΠΆ? Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° Β«Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΡ Π΅ΠΌΡΒ» ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ Π²Π°ΠΌ ΠΏΠΎΠ΄Π½ΠΎΠΆΠΊΡ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π½ΠΎΠ²ΠΈΡΠΎΠΊ Π² Delta Lake. ΠΠΎΡΠ΅ΠΌΡ Π±Ρ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΡΡ Π΅ΠΌΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Ρ ΠΌΠΎΠ³ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ DataFrame, Π½Π΅ΡΠΌΠΎΡΡΡ Π½ΠΈ Π½Π° ΡΡΠΎ?
ΠΠ°ΠΊ Π³Π»Π°ΡΠΈΡ ΡΡΠ°ΡΠ°Ρ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΊΠ°, Β«ΡΠ½ΡΠΈΡ ΠΏΡΠΎΡΠΈΠ»Π°ΠΊΡΠΈΠΊΠΈ ΡΡΠΎΠΈΡ ΡΡΠ½ΡΠ° Π»Π΅ΡΠ΅Π½ΠΈΡΒ». Π ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΠ΅ΡΡ ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ²ΠΎΠ΅ΠΉ ΡΡ Π΅ΠΌΡ, ΠΏΠΎΠ΄Π½ΠΈΠΌΡΡ ΡΠ²ΠΎΠΈ ΠΎΡΠ²ΡΠ°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π³ΠΎΠ»ΠΎΠ²Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ β Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠΎΠ³ΡΠ°Π½ΠΈΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ, ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½Π½ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΡΠ°ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ½ΡΡΡΡ Π² ΠΊΠΎΡΠΌΠ°ΡΠ°Ρ . ΠΡΡΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΡΠΈΡ Π²ΡΠ°Π³ΠΎΠ² Ρ Π²ΠΎΡΠΎΡ β Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡ Π΅ΠΌΡ β ΠΈ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ Π½ΠΈΠΌΠΈ Π½Π° ΡΠ²Π΅ΡΡ, Π° Π½Π΅ ΠΏΠΎΠ·ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π½Π°ΡΠ½ΡΡ ΡΡΡΠΊΠ°ΡΡ Π² ΡΠ΅ΠΌΠ½ΡΡ Π³Π»ΡΠ±ΠΈΠ½Π°Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡ Π΅ΠΌΠ° Π²Π°ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ ΡΠ°ΠΌΠΈ Π½Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ Β«ΡΠ°Π·ΠΆΠΈΠΆΠ΅Π½ΠΈΠ΅Β» (dilution) Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° Π½ΠΎΠ²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΡΠ°ΠΊ ΡΠ°ΡΡΠΎ, ΡΡΠΎ ΡΠ°Π½Π΅Π΅ ΡΠ΅Π½Π½ΡΠ΅, ΡΠΆΠ°ΡΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅ΡΡΡΡ ΡΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΡ ΠΈΠ·-Π·Π° Π½Π°Π²ΠΎΠ΄Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠΎΠΎΡΡΡΡ Π²Π°Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π²ΡΡΠΎΠΊΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°, ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ Π΄Π΅Π»Π°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ β ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π²Π°ΠΌ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π΄ΠΎΠ±ΡΠΎΡΠΎΠ²Π΅ΡΡΠ½ΡΠΌΠΈ, Π° Π²Π°ΡΠΈΠΌ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ β ΡΠΈΡΡΡΠΌΠΈ.
ΠΡΠ»ΠΈ ΠΏΡΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ Π²Ρ ΡΠ΅ΡΠΈΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ β Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΠΉ ΡΠΈΠΊΡ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ β ΡΠ²ΠΎΠ»ΡΡΠΈΡ ΡΡ Π΅ΠΌΡ!
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ²ΠΎΠ»ΡΡΠΈΡ ΡΡ Π΅ΠΌΡ?
ΠΠ²ΠΎΠ»ΡΡΠΈΡ ΡΡ Π΅ΠΌΡ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ΅ΠΊΡΡΡΡ ΡΡ Π΅ΠΌΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅Π½ΡΡΡΡΡ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ, ΡΡΠΎΠ±Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡ Π΅ΠΌΡ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π½ΠΎΠ²ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ².
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ²ΠΎΠ»ΡΡΠΈΡ ΡΡ Π΅ΠΌΡ?
Π‘Π»Π΅Π΄ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠ»ΡΡΠΈΡ ΡΡ
Π΅ΠΌΡ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π½Π΅Π΅ Π±ΡΠ»ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½Ρ ΠΈΠ·-Π·Π° Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΡ
Π΅ΠΌΠ΅. ΠΠ²ΠΎΠ»ΡΡΠΈΡ ΡΡ
Π΅ΠΌΡ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ .option('mergeSchema', 'true')
ΠΊ Π²Π°ΡΠ΅ΠΉ Spark ΠΊΠΎΠΌΠ°Π½Π΄Π΅ .write ΠΈΠ»ΠΈ .writeStream.
# ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ mergeSchema
loans.write.format("delta")
.option("mergeSchema", "true")
.mode("append")
.save(DELTALAKE_SILVER_PATH)
ΠΠ»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π³ΡΠ°ΡΠΈΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ Spark SQL Π·Π°ΠΏΡΠΎΡ
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π³ΡΠ°ΡΠΈΠΊ Ρ Π½ΠΎΠ²ΡΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ ΠΏΡΠΎΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ
%sql
SELECT addr_state, sum(`amount`) AS amount
FROM loan_by_state_delta
GROUP BY addr_state
ORDER BY sum(`amount`)
DESC LIMIT 10
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΡ ΠΎΠΏΡΠΈΡ Π΄Π»Ρ Π²ΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΠΈ Spark, Π΄ΠΎΠ±Π°Π²ΠΈΠ² spark.databricks.delta.schema.autoMerge = True
Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Spark. ΠΠΎ ΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΡΠΈΠΌ Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ
Π΅ΠΌΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡ Π²Π°Ρ ΠΎ Π½Π΅ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ
Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡΡ
ΡΡ
Π΅ΠΌΠ΅.
ΠΠΊΠ»ΡΡΠΈΠ² Π² Π·Π°ΠΏΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ mergeSchema
, Π²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π² DataFrame, Π½ΠΎ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π² ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΡΡ
Π΅ΠΌΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ, ΠΈ ΠΎΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² ΠΊΠΎΠ½Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ² ΡΡΡΡΠΊΡΡΡΡ.
ΠΠ°ΡΠ° ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ ΠΈ ΡΡΠ΅Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΎΠΏΡΠΈΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΌΠ΅ΡΡΠΈΠΊΡ ΠΈΠ»ΠΈ ΡΡΠΎΠ»Π±Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΎΠ΄Π°ΠΆ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΡΠ΅) Π² ΡΠ²ΠΎΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, Π½Π΅ Π½Π°ΡΡΡΠ°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΡΡΠ°ΡΡΡ ΡΡΠΎΠ»Π±ΡΠ°Ρ .
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠΏΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΡ Π΅ΠΌΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ²ΠΎΠ»ΡΡΠΈΡ ΡΡ Π΅ΠΌΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ ΡΠ°Π±Π»ΠΈΡΡ:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² (ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ)
- ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΈΠ· NullType -> Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠΏ ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ByteType -> ShortType -> IntegerType
ΠΡΡΠ³ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΡΠ²ΠΎΠ»ΡΡΠΈΠΈ ΡΡ
Π΅ΠΌΡ, ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΡ
Π΅ΠΌΠ° ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°Π½Ρ ΠΏΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ .option("overwriteSchema", "true")
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΠ»Π±Π΅Ρ Β«FooΒ» ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ» integer, Π° Π½ΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° Π±ΡΠ»Π° Π±Ρ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
, ΡΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Parquet (data) Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ. Π ΡΠ°ΠΊΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ:
- ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠ°
- ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° (Π½Π° ΠΌΠ΅ΡΡΠ΅)
- ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΎΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«FooΒ» ΠΈ Β«fooΒ»)
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ΅Π»ΠΈΠ·ΠΎΠΌ Spark 3.0 Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ²Π½ΡΠΉ DDL (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ALTER TABLE), ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π°Π΄ ΡΡ Π΅ΠΌΠ°ΠΌΠΈ ΡΠ°Π±Π»ΠΈΡ:
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠΎΠ²
- ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΊ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ
- Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ°Π±Π»ΠΈΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ.
Π ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·Π° ΡΠ²ΠΎΠ»ΡΡΠΈΡ ΡΡ Π΅ΠΌΡ?
ΠΠ²ΠΎΠ»ΡΡΠΈΡ ΡΡ Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅Π³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π²Π°Π΅ΡΠ΅ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡ Π΅ΠΌΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ (Π² ΠΏΡΠΎΡΠΈΠ²ΠΎΠ²Π΅Ρ ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² ΡΠ²ΠΎΠΉ DataFrame ΡΡΠΎΠ»Π±ΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΠΌ Π±ΡΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ). ΠΡΠΎ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΌΠΈΠ³ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΡ ΡΡ Π΅ΠΌΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ΅Ρ Π»ΡΠ±ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡ Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Ρ Π²Π°ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ. Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Ρ ΡΡΠΈ Π²ΡΡΠΎΠΊΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ, Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π²ΡΡΠΎΡΠ°ΠΉΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΡΡΡΠΆΠ΄Π°Ρ ΠΎΠ± ΡΡΠΎΠΌ ΡΠ΅ΡΠΊΠΎ ΠΈ ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠΌ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ Π±ΠΈΠ·Π½Π΅Ρ-ΡΠ΅ΡΠ΅Π½ΠΈΡ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠ²ΠΎΠ»ΡΡΠΈΡ ΡΡ Π΅ΠΌΡ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΡΠΏΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΡ Π΅ΠΌΡ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΡΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ β Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΎΠ»Π±Π΅Ρ.
ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ β ΡΡΠΎ ΡΠ½Ρ, Π³Π΄Π΅ ΡΠ²ΠΎΠ»ΡΡΠΈΠΈ ΡΡ Π΅ΠΌΡ β ΡΡΠΎ ΠΈΠ½Ρ. ΠΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΠΊ Π½ΠΈΠΊΠΎΠ³Π΄Π° ΡΠΏΡΠΎΡΠ°ΡΡ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΌΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΠΈΠ³Π½Π°Π»Π°.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΡΡ ΠΡΠΊΡΠ»Π° ΠΡΡΡΠΈ ΠΈ ΠΡΠ°Π½Π°Π²Π° ΠΠ½Π°Π½Π΄Π° Π·Π° ΠΈΡ Π²ΠΊΠ»Π°Π΄ Π² ΡΡΡ ΡΡΠ°ΡΡΡ.
ΠΡΡΠ³ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ ΠΈΠ· ΡΡΠΎΠΉ ΡΠ΅ΡΠΈΠΈ:
Π‘ΡΠ°ΡΡΠΈ ΠΏΠΎ ΡΠ΅ΠΌΠ΅
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com