рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХрдордзреНрдпреЗ рдЬрд╛: рд╕реНрдХреАрдорд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрдгрд┐ рдЙрддреНрдХреНрд░рд╛рдВрддреА

рдЕрд╣реЛ рд╣рд╛рдмреНрд░! рд▓реЗрдЦрд╛рдЪрд╛ рдЕрдиреБрд╡рд╛рдж рдореА рддреБрдордЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдЖрдгреВрди рджреЗрдд рдЖрд╣реЗ "рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХрдордзреНрдпреЗ рдбреБрдмрдХреА рдорд╛рд░рдгреЗ: рд╕реНрдХреАрдорд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрдгрд┐ рдЙрддреНрдХреНрд░рд╛рдВрддреА" рд▓реЗрдЦрдХ рдмреБрд░рд╛рдХ рдпрд╛рд╡реБрдЭ, рдмреНрд░реЗрдирд░ рд╣реЗрдВрдЯреНрдЭ рдЖрдгрд┐ рдбреЗрдиреА рд▓реА, рдЬреЗ рдЕрднреНрдпрд╛рд╕рдХреНрд░рдо рд╕реБрд░реВ рд╣реЛрдгреНрдпрд╛рдЪреНрдпрд╛ рдЕрдкреЗрдХреНрд╖реЗрдиреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ рдбреЗрдЯрд╛ рдЕрднрд┐рдпрдВрддрд╛ OTUS рдХрдбреВрди.

рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХрдордзреНрдпреЗ рдЬрд╛: рд╕реНрдХреАрдорд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрдгрд┐ рдЙрддреНрдХреНрд░рд╛рдВрддреА

рдбреЗрдЯрд╛, рдЖрдордЪреНрдпрд╛ рдЕрдиреБрднрд╡рд╛рдкреНрд░рдорд╛рдгреЗ, рд╕рддрдд рдЬрдорд╛ рд╣реЛрдд рдЖрд╣реЗ рдЖрдгрд┐ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдд рдЖрд╣реЗ. рдЪрд╛рд▓реВ рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рдареА, рдЬрдЧрд╛рдЪреНрдпрд╛ рдЖрдордЪреНрдпрд╛ рдорд╛рдирд╕рд┐рдХ рдореЙрдбреЗрд▓реНрд╕рдирд╛ рдирд╡реАрди рдбреЗрдЯрд╛рд╢реА рдЬреБрд│рд╡реВрди рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рдирд╡реАрди рдкрд░рд┐рдорд╛рдгреЗ рдЖрд╣реЗрддтАФрдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдзреА рдХрд▓реНрдкрдирд╛ рдирд╕рд▓реЗрд▓реНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдВрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдгреНрдпрд╛рдЪреЗ рдирд╡реАрди рдорд╛рд░реНрдЧ. рд╣реЗ рдорд╛рдирд╕рд┐рдХ рдореЙрдбреЗрд▓ рдЯреЗрдмрд▓ рд╕реНрдХреАрдорд╛рдкреЗрдХреНрд╖рд╛ рдлрд╛рд░рд╕реЗ рд╡реЗрдЧрд│реЗ рдирд╛рд╣реАрдд рдЬреЗ рдЖрдореНрд╣реА рдирд╡реАрди рдорд╛рд╣рд┐рддреАрдЪреЗ рд╡рд░реНрдЧреАрдХрд░рдг рдЖрдгрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╢реА рдХрд░рддреЛ рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛рдд.

рд╣реЗ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрдХреАрдорд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд╛рдЪреНрдпрд╛ рд╕рдорд╕реНрдпреЗрд╡рд░ рдЖрдгрддреЗ. рд╡реНрдпрд╡рд╕рд╛рдпрд╛рддреАрд▓ рдЖрд╡реНрд╣рд╛рдиреЗ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛рд▓рд╛рдВрддрд░рд╛рдиреЗ рдмрджрд▓рддрд╛рдд, рддреНрдпрд╛рдЪрдкреНрд░рдорд╛рдгреЗ рддреБрдордЪреНрдпрд╛ рдбреЗрдЯрд╛рдЪреА рд░рдЪрдирд╛рд╣реА рдмрджрд▓рддреЗ. рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХ рдбреЗрдЯрд╛ рдмрджрд▓рддреЗ рдореНрд╣рдгреВрди рдирд╡реАрди рдореЛрдЬрдорд╛рдк рд╕рд╛рджрд░ рдХрд░рдгреЗ рд╕реЛрдкреЗ рдХрд░рддреЗ. рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рддреНрдпрд╛рдВрдЪреЗ рд╕рд╛рд░рдгреА рд╕реНрдХреАрдорд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд╛рдзреНрдпрд╛ рд╢рдмреНрджрд╛рд░реНрдерд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдЖрд╣реЗ. рдпрд╛ рд╕рд╛рдзрдирд╛рдВрдордзреНрдпреЗ рд╕реНрдХреАрдорд╛ рдПрдиреНрдлреЛрд░реНрд╕рдореЗрдВрдЯ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ, рдЬреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рддреНрд░реБрдЯреА рдХрд┐рдВрд╡рд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛рд╕рд╣ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЯреЗрдмрд▓рдЪреЗ рдЕрдирд╛рд╡рдзрд╛рдирд╛рдиреЗ рдкреНрд░рджреВрд╖рдг рдХрд░рдгреНрдпрд╛рдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рдг рдХрд░рддреЗ рдЖрдгрд┐ рд╕реНрдХреАрдорд╛ рдЗрд╡реНрд╣реЛрд▓реНрдпреВрд╢рди, рдЬреНрдпрд╛рдореБрд│реЗ рдореМрд▓реНрдпрд╡рд╛рди рдбреЗрдЯрд╛рдЪреЗ рдирд╡реАрди рд╕реНрддрдВрдн рдпреЛрдЧреНрдп рдард┐рдХрд╛рдгреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдЬреЛрдбрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рдпрд╛ рд▓реЗрдЦрд╛рдд, рдЖрдореНрд╣реА рд╣реА рд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рдд рдЕрдзрд┐рдХ рдЦреЛрд▓рд╡рд░ рдЬрд╛рдК.

рд╕рд╛рд░рдгреА рдпреЛрдЬрдирд╛ рд╕рдордЬреВрди рдШреЗрдгреЗ

Apache Spark рдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ DataFrame рдордзреНрдпреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░, рд╕реНрддрдВрдн рдЖрдгрд┐ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдбреЗрдЯрд╛рдЪреЗ рд╕реНрд╡рд░реВрдк рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгрд╛рд░реА рд╕реНрдХреАрдорд╛ рдЕрд╕рддреЗ. рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХрд╕рд╣, рдЯреЗрдмрд▓ рд╕реНрдХреАрдорд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд▓реЙрдЧрдордзреНрдпреЗ JSON рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

рдпреЛрдЬрдирд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдореНрд╣рдгрдЬреЗ рдХрд╛рдп?

рд╕реНрдХреАрдорд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА, рдЬреНрдпрд╛рд▓рд╛ рд╕реНрдХреАрдорд╛ рд╡реНрд╣реЕрд▓рд┐рдбреЗрд╢рди рдЕрд╕реЗрд╣реА рдореНрд╣рдгрддрд╛рдд, рд╣реА рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХрдордзреАрд▓ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдпрдВрддреНрд░рдгрд╛ рдЖрд╣реЗ рдЬреА рдЯреЗрдмрд▓рдЪреНрдпрд╛ рд╕реНрдХреАрдорд╛рд╢реА рдЬреБрд│рдд рдирд╕рд▓реЗрд▓реНрдпрд╛ рдиреЛрдВрджреА рдирд╛рдХрд╛рд░реВрди рдбреЗрдЯрд╛ рдЧреБрдгрд╡рддреНрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ. рдХреЗрд╡рд│-рд░рд┐рдЭрд░реНрд╡реНрд╣реЗрд╢рди рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рд░реЗрд╕реНрдЯреЙрд░рдВрдЯрдЪреНрдпрд╛ рдлреНрд░рдВрдЯ рдбреЗрд╕реНрдХрд╡рд░реАрд▓ рд╣реЛрд╕реНрдЯреЗрд╕рдкреНрд░рдорд╛рдгреЗ, рддреА рдЯреЗрдмрд▓рдордзреНрдпреЗ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛рдЪрд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрдВрдн рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕реНрддрдВрднрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╕реВрдЪреАрдордзреНрдпреЗ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рддреЗ (рджреБрд╕рд░реНтАНрдпрд╛ рд╢рдмреНрджрд╛рдд, рддреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА "рдЖрд░рдХреНрд╖рдг" рдЖрд╣реЗ рдХреА рдирд╛рд╣реА. ), рдЖрдгрд┐ рд╕реВрдЪреАрдордзреНрдпреЗ рдирд╕рд▓реЗрд▓реНрдпрд╛ рд╕реНрддрдВрднрд╛рдВрд╕рд╣ рдХреЛрдгрддреЗрд╣реА рд░реЗрдХреЙрд░реНрдб рдирд╛рдХрд╛рд░рддреЗ.

рд╕реНрдХреАрдорд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд╢реА рдХрд╛рд░реНрдп рдХрд░рддреЗ?

рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХ рд╕реНрдХреАрдорд╛-рдСрди-рд░рд╛рдЗрдЯ рдЪреЗрдХрд┐рдВрдЧ рд╡рд╛рдкрд░рддреЗ, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рдЯреЗрдмрд▓рд╡рд░реАрд▓ рд╕рд░реНрд╡ рдирд╡реАрди рд▓реЗрдЦрди рд▓реЗрдЦрдирд╛рдЪреНрдпрд╛ рд╡реЗрд│реА рд▓рдХреНрд╖реНрдп рд╕рд╛рд░рдгреАрдЪреНрдпрд╛ рд╕реНрдХреАрдорд╛рд╢реА рд╕реБрд╕рдВрдЧрддрддреЗрд╕рд╛рдареА рддрдкрд╛рд╕рд▓реЗ рдЬрд╛рддреЗ. рд╕реНрдХреАрдорд╛ рд╡рд┐рд╕рдВрдЧрдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреВрд░реНрдгрдкрдгреЗ рд░рджреНрдж рдХрд░рддреЗ (рдХреЛрдгрддрд╛рд╣реА рдбреЗрдЯрд╛ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдирд╛рд╣реА) рдЖрдгрд┐ рд╡рд┐рд╕рдВрдЧрддреА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕ рд╕реВрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдкрд╡рд╛рдж рд╡рд╛рдврд╡рддреЗ.
рд░реЗрдХреЙрд░реНрдб рдЯреЗрдмрд▓рд╢реА рд╕реБрд╕рдВрдЧрдд рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХ рдЦрд╛рд▓реАрд▓ рдирд┐рдпрдо рд╡рд╛рдкрд░рддреЗ. рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдпреЛрдЧреНрдп рдбреЗрдЯрд╛рдлреНрд░реЗрдо:

  • рд▓рдХреНрд╖реНрдп рд╕рд╛рд░рдгреАрдЪреНрдпрд╛ рд╕реНрдХреАрдорд╛рдордзреНрдпреЗ рдирд╕рд▓реЗрд▓реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрддрдВрдн рдЕрд╕реВ рд╢рдХрдд рдирд╛рд╣реАрдд. рдпрд╛рдЙрд▓рдЯ, рдЬрд░ рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рдбреЗрдЯрд╛рдордзреНрдпреЗ рд╕рд╛рд░рдгреАрддреАрд▓ рд╕рд░реНрд╡ рд╕реНрддрдВрдн рдирд╕рддреАрд▓ рддрд░ рд╕рд░реНрд╡рдХрд╛рд╣реА рдареАрдХ рдЖрд╣реЗ - рдпрд╛ рд╕реНрддрдВрднрд╛рдВрдирд╛ рдлрдХреНрдд рд╢реВрдиреНрдп рдореВрд▓реНрдпреЗ рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реА рдЬрд╛рддреАрд▓.
  • рд▓рдХреНрд╖реНрдп рд╕рд╛рд░рдгреАрдордзреАрд▓ рд╕реНрддрдВрднрд╛рдВрдЪреНрдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрдкреЗрдХреНрд╖рд╛ рднрд┐рдиреНрди рд╕реНрддрдВрдн рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЕрд╕реВ рд╢рдХрдд рдирд╛рд╣реАрдд. рд▓рдХреНрд╖реНрдп рд╕рд╛рд░рдгреА рд╕реНрддрдВрднрд╛рдордзреНрдпреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧрдЯрд╛рдЗрдк рдбреЗрдЯрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рдкрд░рдВрддреБ рдбреЗрдЯрд╛рдлреНрд░реЗрдордордзреАрд▓ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрддрдВрднрд╛рдордзреНрдпреЗ рдЗрдВрдЯреАрдЬрд░рдЯрд╛рдЗрдк рдбреЗрдЯрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рд╕реНрдХреАрдорд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЕрдкрд╡рд╛рдж рдХрд░реЗрд▓ рдЖрдгрд┐ рд▓реЗрдЦрди рдСрдкрд░реЗрд╢рди рд╣реЛрдгреНрдпрд╛рдкрд╛рд╕реВрди рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрд▓.
  • рдХреЙрд▓рдордЪреА рдирд╛рд╡реЗ рдЕрд╕реВ рд╢рдХрдд рдирд╛рд╣реАрдд рдЬреА рдлрдХреНрдд рдХреЗрд╕рдордзреНрдпреЗ рднрд┐рдиреНрди рдЕрд╕рддреАрд▓. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рддреБрдордЪреНрдпрд╛рдХрдбреЗ 'рдлреВ' рдЖрдгрд┐ 'рдлреВ' рдирд╛рд╡рд╛рдЪреЗ рд╕реНрддрдВрдн рдПрдХрд╛рдЪ рдЯреЗрдмрд▓рдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реАрдд. рд╕реНрдкрд╛рд░реНрдХ рдХреЗрд╕-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдХрд┐рдВрд╡рд╛ рдХреЗрд╕-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ (рдбреАрдлреЙрд▓реНрдЯ) рдореЛрдбрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ, рддрд░ рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХ рдХреЗрд╕-рд╕рдВрд░рдХреНрд╖рд┐рдд рдЖрд╣реЗ рдкрд░рдВрддреБ рд╕реНрдХреАрдорд╛ рд╕реНрдЯреЛрд░реЗрдЬрдордзреНрдпреЗ рдЕрд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЖрд╣реЗ. рд╕реНрддрдВрдн рдорд╛рд╣рд┐рддреА рд╕рдВрдЪрдпрд┐рдд рдЖрдгрд┐ рдкрд░рдд рдХрд░рддрд╛рдирд╛ Parquet рдХреЗрд╕ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЕрд╕рддреЗ. рд╕рдВрднрд╛рд╡реНрдп рддреНрд░реБрдЯреА, рдбреЗрдЯрд╛ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░ рдХрд┐рдВрд╡рд╛ рдбреЗрдЯрд╛ рд╣рд╛рдиреА рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА (рдбреЗрдЯрд╛рдмреНрд░рд┐рдХреНрд╕рд╡рд░ рдЖрдореНрд╣реА рд╡реИрдпрдХреНрддрд┐рдХрд░рд┐рддреНрдпрд╛ рдЕрдиреБрднрд╡рд▓реЗрд▓реЗ рдХрд╛рд╣реАрддрд░реА), рдЖрдореНрд╣реА рд╣реА рдорд░реНрдпрд╛рджрд╛ рдЬреЛрдбрдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛.

рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЬреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХ рдЯреЗрдмрд▓рдордзреНрдпреЗ рдХрд╛рд╣реА рдирд╡реАрди рд╡реНрдпреБрддреНрдкрдиреНрди рд╕реНрддрдВрдн рдЬреЛрдбрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ рддреЗрд╡реНрд╣рд╛ рдЦрд╛рд▓реАрд▓ рдХреЛрдбрдордзреНрдпреЗ рдХрд╛рдп рд╣реЛрддреЗ рддреЗ рдкрд╛рд╣реВ рдпрд╛ рдЬреЗ рдЕрджреНрдпрд╛рдк рд╕реНрд╡реАрдХрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗрд▓реЗ рдирд╛рд╣реАрдд.

# ╨б╨│╨╡╨╜╨╡╤А╨╕╤А╤Г╨╡╨╝ 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.

рдЖрдкреЛрдЖрдк рдирд╡реАрди рд╕реНрддрдВрдн рдЬреЛрдбрдгреНрдпрд╛рдРрд╡рдЬреА, рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХ рд╕реНрдХреАрдорд╛ рд▓рд╛рджрддреЗ рдЖрдгрд┐ рд▓реЗрдЦрди рдерд╛рдВрдмрд╡рддреЗ. рдХреЛрдгрддрд╛ рд╕реНрддрдВрдн (рдХрд┐рдВрд╡рд╛ рд╕реНрддрдВрднрд╛рдВрдЪрд╛ рд╕рдВрдЪ) рд╡рд┐рд╕рдВрдЧрддреА рдирд┐рд░реНрдорд╛рдг рдХрд░рдд рдЖрд╣реЗ рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрд▓рдиреЗрд╕рд╛рдареА рд╕реНрдкрд╛рд░реНрдХ рд╕реНрдЯреЕрдХ рдЯреНрд░реЗрд╕рдордзреВрди рджреЛрдиреНрд╣реА рд╕реНрдХреАрдорд╛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ.

рд╕реНрдХреАрдорд╛ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдлрд╛рдпрджрд╛ рдХрд╛рдп рдЖрд╣реЗ?

рд╕реНрдХреАрдорд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╣реА рдПрдХ рдЕрддреНрдпрдВрдд рдХрдбрдХ рддрдкрд╛рд╕рдгреА рдЕрд╕рд▓реНрдпрд╛рдореБрд│реЗ, рдЙрддреНрдкрд╛рджрди рдХрд┐рдВрд╡рд╛ рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕реНрд╡рдЪреНрдЫ, рдкреВрд░реНрдгрдкрдгреЗ рдмрджрд▓рд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛ рд╕реЗрдЯрд╕рд╛рдареА рджреНрд╡рд╛рд░рдкрд╛рд▓ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╕рд╛рдзрди рдЖрд╣реЗ. рд╕рд╛рдорд╛рдиреНрдпрдд: рдереЗрдЯ рдбреЗрдЯрд╛ рдлреАрдб рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рд╕рд╛рд░рдгреНрдпрд╛рдВрд╡рд░ рд▓рд╛рдЧреВ рдХрд░рд╛:

  • рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо
  • BI рдбреЕрд╢рдмреЛрд░реНрдб
  • рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЖрдгрд┐ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рд╕рд╛рдзрдиреЗ
  • рдХреЛрдгрддреАрд╣реА рдЙрддреНрдкрд╛рджрди рдкреНрд░рдгрд╛рд▓реА рдЬреНрдпрд╛рд╕рд╛рдареА рдЕрддреНрдпрдВрдд рд╕рдВрд░рдЪрд┐рдд, рдЬреЛрд░рджрд╛рд░ рдЯрд╛рдИрдк рдХреЗрд▓реЗрд▓реЗ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╕реНрдХреАрдорд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддрд╛рдд.

рдпрд╛ рдЕрдВрддрд┐рдо рдЕрдбрдерд│реНрдпрд╛рд╕рд╛рдареА рддреНрдпрд╛рдВрдЪрд╛ рдбреЗрдЯрд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдмрд░реЗрдЪ рд╡рд╛рдкрд░рдХрд░реНрддреЗ рдПрдХ рд╕рд╛рдзреЗ "рдорд▓реНрдЯреА-рд╣реЙрдк" рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╡рд╛рдкрд░рддрд╛рдд рдЬреЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЯреЗрдмрд▓рдордзреНрдпреЗ рд╣рд│реВрд╣рд│реВ рд░рдЪрдирд╛ рд╕рд╛рджрд░ рдХрд░рддрд╛рдд. рдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрдг рд▓реЗрдЦ рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХрд╕рд╣ рдкреНрд░реЛрдбрдХреНрд╢рди-рдЧреНрд░реЗрдб рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ.

рдЕрд░реНрдерд╛рдд, рд╕реНрдХреАрдорд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрдкрд▓реНрдпрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдордзреНрдпреЗ рдХреБрдареЗрд╣реА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ, рдкрд░рдВрддреБ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдХреА рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдЯреЗрдмрд▓рд╡рд░ рдкреНрд░рд╡рд╛рд╣рд┐рдд рдХрд░рдгреЗ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдЕрд╕реВ рд╢рдХрддреЗ рдХрд╛рд░рдг, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдкрдг рд╡рд┐рд╕рд░рд▓рд╛рдд рдХреА рдЖрдкрдг рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рдбреЗрдЯрд╛рдордзреНрдпреЗ рджреБрд╕рд░рд╛ рд╕реНрддрдВрдн рдЬреЛрдбрд▓рд╛ рдЖрд╣реЗ.

рдбреЗрдЯрд╛ рд╕реМрдореНрдп рдХрд░рдгреЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд

рдЖрддрд╛рдкрд░реНрдпрдВрдд рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рд╢реНрди рдкрдбрд▓рд╛ рдЕрд╕реЗрд▓ рдХреА, рд╣реА рд╕рдЧрд│реА рдЧрдбрдмрдб рдХрд╢рд╛рд╕рд╛рдареА рдЖрд╣реЗ? рд╢реЗрд╡рдЯреА, рдХрд╛рд╣реАрд╡реЗрд│рд╛ рдЕрдирдкреЗрдХреНрд╖рд┐рдд "рд╕реНрдХреАрдорд╛ рдЬреБрд│рдд рдирд╛рд╣реА" рддреНрд░реБрдЯреА рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рд╡рд░реНрдХрдлреНрд▓реЛрдордзреНрдпреЗ рдЯреНрд░рд┐рдк рдХрд░реВ рд╢рдХрддреЗ, рд╡рд┐рд╢реЗрд╖рдд: рддреБрдореНрд╣реА рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХрдордзреНрдпреЗ рдирд╡реАрди рдЕрд╕рд▓реНрдпрд╛рд╕. рдлрдХреНрдд рдЧрд░рдЬреЗрдиреБрд╕рд╛рд░ рд╕реНрдХреАрдорд╛ рдХрд╛ рдмрджрд▓реВ рджреЗрдК рдирдпреЗ рдЬреЗрдгреЗрдХрд░реВрди рдореА рдХрд╛рд╣реАрд╣реА рдЕрд╕рд▓реЗ рддрд░реА рдорд╛рдЭрд╛ рдбреЗрдЯрд╛рдлреНрд░реЗрдо рд▓рд┐рд╣реВ рд╢рдХреЗрди?

рдЬреБрдиреНрдпрд╛ рдореНрд╣рдгреАрдкреНрд░рдорд╛рдгреЗ, "рдкреНрд░рддрд┐рдмрдВрдзрд╛рдЪрд╛ рдПрдХ рдФрдВрд╕ рд╣рд╛ рдПрдХ рдкреМрдВрдб рдмрд░рд╛ рдЖрд╣реЗ." рдПрдЦрд╛рджреНрдпрд╛ рд╡реЗрд│реА, рддреБрдореНрд╣реА рддреБрдордЪреА рдпреЛрдЬрдирд╛ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪреА рдХрд╛рд│рдЬреА рди рдШреЗрддрд▓реНрдпрд╛рд╕, рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕реБрд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдХреБрд░реВрдк рдбреЛрдХреЗ рд╡рд░ рдХрд╛рдврддреАрд▓ - рд╡рд░рд╡рд░ рдПрдХрд╕рдВрдз рдХрдЪреНрдЪреНрдпрд╛ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрд╛рдВрдордзреНрдпреЗ рдПрдЬ рдХреЗрд╕реЗрд╕, рджреВрд╖рд┐рдд рд╕реНрддрдВрдн, рд╡рд┐рдХреГрдд рдореЕрдкрд┐рдВрдЧ рдХрд┐рдВрд╡рд╛ рд╕реНрд╡рдкреНрдирд╛рдд рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдЗрддрд░ рднрдпрд╛рдирдХ рдЧреЛрд╖реНрдЯреА рдЕрд╕реВ рд╢рдХрддрд╛рдд. рднрдпрд╛рдирдХ рд╕реНрд╡рдкреНрдиреЗ рдпрд╛ рд╢рддреНрд░реВрдВрдирд╛ рдЧреЗрдЯрд╡рд░ рдерд╛рдВрдмрд╡рдгреЗ - рд╕реНрдХреАрдорд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╣ - рдЖрдгрд┐ рдирдВрддрд░ рддреЗ рддреБрдордЪреНрдпрд╛ рдЙрддреНрдкрд╛рджрди рдХреЛрдбрдЪреНрдпрд╛ рдЧрдбрдж рдЦреЛрд▓реАрдд рд▓рдкреВрди рдмрд╕реВ рд▓рд╛рдЧрдгреНрдпрд╛рдРрд╡рдЬреА рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╢реА рдкреНрд░рдХрд╛рд╢рд╛рдд рд╕рд╛рдореЛрд░реЗ рдЬрд╛рдгреЗ рд╣рд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдорд╛рд░реНрдЧ рдЖрд╣реЗ.

рд╕реНрдХреАрдорд╛ рд▓рд╛рдЧреВ рдХреЗрд▓реНрдпрд╛рдиреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рддреНрд░реА рдорд┐рд│рддреЗ рдХреА рддреБрдореНрд╣реА рдмрджрд▓ рдордВрдЬреВрд░ рдХреЗрд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп рддреБрдордЪреНрдпрд╛ рдЯреЗрдмрд▓рдЪрд╛ рд╕реНрдХреАрдорд╛ рдмрджрд▓рдгрд╛рд░ рдирд╛рд╣реА. рд╣реЗ рдбреЗрдЯрд╛ рдХрдореА рд╣реЛрдгреНрдпрд╛рдкрд╛рд╕реВрди рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ, рдЬреЗ рдирд╡реАрди рд╕реНрддрдВрдн рдЗрддрдХреНрдпрд╛ рд╡рд╛рд░рдВрд╡рд╛рд░ рдЬреЛрдбрд▓реЗ рдЬрд╛рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рдЙрджреНрднрд╡реВ рд╢рдХрддрд╛рдд рдХреА рдкреВрд░реНрд╡реА рдореМрд▓реНрдпрд╡рд╛рди, рд╕рдВрдХреБрдЪрд┐рдд рд╕рд╛рд░рдгреНрдпрд╛ рдбреЗрдЯрд╛рдЪреНрдпрд╛ рдкреНрд░рд╡рд╛рд╣рд╛рдореБрд│реЗ рддреНрдпрд╛рдВрдЪрд╛ рдЕрд░реНрде рдЖрдгрд┐ рдЙрдкрдпреБрдХреНрддрддрд╛ рдЧрдорд╛рд╡рддрд╛рдд. рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗрддреБрдкреБрд░рд╕реНрд╕рд░ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА, рдЙрдЪреНрдЪ рдорд╛рдирдХреЗ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддреЗрдЪреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдгреНрдпрд╛рд╕ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реВрди, рд╕реНрдХреАрдорд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдиреЗрдордХреЗ рддреЗрдЪ рдХрд░рддреЗ рдЬреЗ рддреЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗ рд╣реЛрддреЗтАФрддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рд░рд╛рд╣рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рддреБрдордЪреА рд╕реНрдкреНрд░реЗрдбрд╢реАрдЯ рд╕реНрд╡рдЪреНрдЫ рдареЗрд╡рдгреНрдпрд╛рдд рдорджрдд рдХрд░рддреЗ.

рдкреБрдвреАрд▓ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд▓реНрдпрд╛рд╕, рдЖрдкрдг рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ рдХреА рдЖрдкрдг рдЦрд░реЛрдЦрд░ рдЧрд░рдЬ рдПрдХ рдирд╡реАрди рд╕реНрддрдВрдн рдЬреЛрдбрд╛ - рдХрд╛рд╣реА рд╣рд░рдХрдд рдирд╛рд╣реА, рдЦрд╛рд▓реА рдПрдХ-рд▓рд╛рдЗрди рдирд┐рд░рд╛рдХрд░рдг рдЖрд╣реЗ. рддреНрдпрд╛рд╡рд░ рдЙрдкрд╛рдп рдореНрд╣рдгрдЬреЗ рд╕рд░реНрдХрд┐рдЯрдЪреА рдЙрддреНрдХреНрд░рд╛рдВрддреА!

рд╕реНрдХреАрдорд╛ рдЙрддреНрдХреНрд░рд╛рдВрддреА рдореНрд╣рдгрдЬреЗ рдХрд╛рдп?

рд╕реНрдХреАрдорд╛ рдЙрддреНрдХреНрд░рд╛рдВрддреА рд╣реЗ рдПрдХ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЖрд╣реЗ рдЬреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рд╡реЗрд│реЛрд╡реЗрд│реА рдмрджрд▓рдгрд╛рд▒реНрдпрд╛ рдбреЗрдЯрд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрддрдорд╛рди рд╕рд╛рд░рдгреА рд╕реНрдХреАрдорд╛ рд╕рд╣рдЬрдкрдгреЗ рдмрджрд▓реВ рджреЗрддреЗ. рдПрдХ рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рдирд╡реАрди рд╕реНрддрдВрдн рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдХреАрдорд╛ рдЖрдкреЛрдЖрдк рдЬреБрд│рд╡реВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЬреЛрдбрдгреА рдХрд┐рдВрд╡рд╛ рдкреБрдирд░реНрд▓реЗрдЦрди рдСрдкрд░реЗрд╢рди рдХрд░рдд рдЕрд╕рддрд╛рдирд╛ рдмрд╣реБрддреЗрдХрджрд╛ рдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

рд╕реНрдХреАрдорд╛ рдЙрддреНрдХреНрд░рд╛рдВрддреА рдХрд╢реА рдХрд╛рд░реНрдп рдХрд░рддреЗ?

рдорд╛рдЧреАрд▓ рд╡рд┐рднрд╛рдЧрд╛рддреАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░реВрди, рд╕реНрдХреАрдорд╛ рд╡рд┐рд╕рдВрдЧрддреАрдореБрд│реЗ рдкреВрд░реНрд╡реА рдирд╛рдХрд╛рд░рд▓реЗрд▓реЗ рдирд╡реАрди рд╕реНрддрдВрдн рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рдХрд╛рд╕рдХ рд╕рд╣рдЬрдкрдгреЗ рд╕реНрдХреАрдорд╛ рдЙрддреНрдХреНрд░рд╛рдВрддреА рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛рдд. рд╕рд░реНрдХрд┐рдЯ рдЙрддреНрдХреНрд░рд╛рдВрддреА рдЬреЛрдбреВрди рд╕рдХреНрд░рд┐рдп рдХреЗрд▓реА рдЬрд╛рддреЗ .option('mergeSchema', 'true') рддреБрдордЪреНрдпрд╛ рд╕реНрдкрд╛рд░реНрдХ рдЯреАрдорд▓рд╛ .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.databricks.delta.schema.autoMerge = True рд╕реНрдкрд╛рд░реНрдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреНрдпреЗ. рдкрд░рдВрддреБ рд╣реЗ рд╕рд╛рд╡рдзрдЧрд┐рд░реАрдиреЗ рд╡рд╛рдкрд░рд╛, рдХрд╛рд░рдг рд╕реНрдХреАрдорд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛рдкреБрдвреЗ рдЕрдирд╛рд╡рдзрд╛рдирд╛рдиреЗ рд╕реНрдХреАрдорд╛ рд╡рд┐рд╕рдВрдЧрддреАрдВрдмрджреНрджрд▓ рд╕рддрд░реНрдХ рдХрд░рдгрд╛рд░ рдирд╛рд╣реА.

рд╡рд┐рдирдВрддреАрдордзреНрдпреЗ рдкреЕрд░рд╛рдореАрдЯрд░ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░реВрди mergeSchema, рдбреЗрдЯрд╛рдлреНрд░реЗрдордордзреНрдпреЗ рдЙрдкрд╕реНрдерд┐рдд рдЕрд╕рд▓реЗрд▓реЗ рдкрд░рдВрддреБ рд▓рдХреНрд╖реНрдп рддрдХреНрддреНрдпрд╛рдордзреНрдпреЗ рдирд╕рд▓реЗрд▓реЗ рд╕рд░реНрд╡ рд╕реНрддрдВрдн рд▓реЗрдЦрди рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рд╕реНрдХреАрдорд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдЬреЛрдбрд▓реЗ рдЬрд╛рддрд╛рдд. рдиреЗрд╕реНрдЯреЗрдб рдлреАрд▓реНрдб рджреЗрдЦреАрд▓ рдЬреЛрдбрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ рддреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╕реНрддрдВрднрд╛рдВрдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рджреЗрдЦреАрд▓ рдЬреЛрдбрд▓реЗ рдЬрд╛рддреАрд▓.

рджрд┐рдирд╛рдВрдХ рдЕрднрд┐рдпрдВрддреЗ рдЖрдгрд┐ рдбреЗрдЯрд╛ рд╢рд╛рд╕реНрддреНрд░рдЬреНрдЮ рдЬреБрдиреНрдпрд╛ рд╕реНрддрдВрднрд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рджреНрдпрдорд╛рди рдореЙрдбреЗрд▓реНрд╕ рди рдореЛрдбрддрд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рджреНрдпрдорд╛рди рдорд╢реАрди рд╢рд┐рдХреНрд╖рдг рдЙрддреНрдкрд╛рджрди рд╕рд╛рд░рдгреНрдпрд╛рдВрдордзреНрдпреЗ рдирд╡реАрди рд╕реНрддрдВрдн (рдХрджрд╛рдЪрд┐рдд рдиреБрдХрддреЗрдЪ рдЯреНрд░реЕрдХ рдХреЗрд▓реЗрд▓реЗ рдореЗрдЯреНрд░рд┐рдХ рдХрд┐рдВрд╡рд╛ рдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рдЪреЗ рд╡рд┐рдХреНрд░реА рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕реНрддрдВрдн) рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рд╣рд╛ рдкрд░реНрдпрд╛рдп рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛рдд.

рдЯреЗрдмрд▓ рдЬреЛрдбрддрд╛рдирд╛ рдХрд┐рдВрд╡рд╛ рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд┐рддрд╛рдирд╛ рд╕реНрдХреАрдорд╛ рдЙрддреНрдХреНрд░рд╛рдВрддреАрдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рдЦрд╛рд▓реАрд▓ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд╕реНрдХреАрдорд╛ рдмрджрд▓рд╛рдВрдирд╛ рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ:

  • рдирд╡реАрди рд╕реНрддрдВрдн рдЬреЛрдбрдгреЗ (рд╣реЗ рд╕рд░реНрд╡рд╛рдд рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддреА рдЖрд╣реЗ)
  • NullType рд╡рд░реВрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдмрджрд▓рдгреЗ -> рдЗрддрд░ рдХреЛрдгрддрд╛рд╣реА рдкреНрд░рдХрд╛рд░ рдХрд┐рдВрд╡рд╛ ByteType -> ShortType -> IntegerType рд╡рд░реВрди рдкреНрд░рдЪрд╛рд░ рдХрд░рдгреЗ

рд╕реНрдХреАрдорд╛ рдЙрддреНрдХреНрд░рд╛рдВрддреАрдордзреНрдпреЗ рдкрд░рд╡рд╛рдирдЧреА рдирд╕рд▓реЗрд▓реНрдпрд╛ рдЗрддрд░ рдмрджрд▓рд╛рдВрд╕рд╛рдареА рд╕реНрдХреАрдорд╛ рдЖрдгрд┐ рдбреЗрдЯрд╛ рдЬреЛрдбреВрди рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд┐рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ .option("overwriteSchema", "true"). рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬреЗрдереЗ рд╕реНрддрдВрдн "Foo" рдореВрд│рддрдГ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реЛрддрд╛ рдЖрдгрд┐ рдирд╡реАрди рд╕реНрдХреАрдорд╛ рд╣рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛, рддреЗрд╡реНрд╣рд╛ рд╕рд░реНрд╡ Parquet(data) рдлрд╛рдпрд▓реА рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд┐рд▓реНрдпрд╛ рдЬрд╛рд╡реНрдпрд╛ рд▓рд╛рдЧрддреАрд▓. рдЕрд╢рд╛ рдмрджрд▓рд╛рдВрдордзреНрдпреЗ рд╣реЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ:

  • рд╕реНрддрдВрдн рд╣рдЯрд╡рдд рдЖрд╣реЗ
  • рд╡рд┐рджреНрдпрдорд╛рди рд╕реНрддрдВрднрд╛рдЪрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдмрджрд▓рдгреЗ (рд╕реНрдерд╛рдирд┐рдХ)
  • рд╕реНрддрдВрднрд╛рдВрдЪреЗ рдирд╛рд╡ рдмрджрд▓рдгреЗ рдЬреЗ рдХреЗрд╡рд│ рдмрд╛рдмрддреАрдд рднрд┐рдиреНрди рдЕрд╕рддрд╛рдд (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, "рдлреВ" рдЖрдгрд┐ "рдлреВ")

рд╢реЗрд╡рдЯреА, Spark 3.0 рдЪреНрдпрд╛ рдкреБрдвреАрд▓ рд░рд┐рд▓реАрдЭрд╕рд╣, рд╕реНрдкрд╖реНрдЯ DDL рдкреВрд░реНрдгрдкрдгреЗ рд╕рдорд░реНрдерд┐рдд рдЕрд╕реЗрд▓ (ALTER TABLE рд╡рд╛рдкрд░реВрди), рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдЯреЗрдмрд▓ рд╕реНрдХреАрдорд╛рд╡рд░ рдЦрд╛рд▓реАрд▓ рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрдИрд▓:

  • рд╕реНрддрдВрдн рдЬреЛрдбрдд рдЖрд╣реЗ
  • рд╕реНрддрдВрдн рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдмрджрд▓рдгреЗ
  • рдЯреЗрдмрд▓ рдЧреБрдгрдзрд░реНрдо рд╕реЗрдЯ рдХрд░рдгреЗ рдЬреЗ рдЯреЗрдмрд▓рдЪреНрдпрд╛ рд╡рд░реНрддрдирд╛рд╡рд░ рдирд┐рдпрдВрддреНрд░рдг рдареЗрд╡рддреЗ, рдЬрд╕реЗ рдХреА рд╡реНрдпрд╡рд╣рд╛рд░ рд▓реЙрдЧ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реНрдпрд╛рдЪреА рд▓рд╛рдВрдмреА рд╕реЗрдЯ рдХрд░рдгреЗ.

рд╕рд░реНрдХрд┐рдЯ рдЙрддреНрдХреНрд░рд╛рдВрддреАрдЪрд╛ рдлрд╛рдпрджрд╛ рдХрд╛рдп рдЖрд╣реЗ?

рд╕реНрдХреАрдорд╛ рдЙрддреНрдХреНрд░рд╛рдВрддреА рдЖрдкрдг рдХрдзреАрд╣реА рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛ рд╣реЗрддреВ рддреБрдордЪреНрдпрд╛ рдЯреЗрдмрд▓рдЪрд╛ рд╕реНрдХреАрдорд╛ рдмрджрд▓рд╛ (рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдЪреБрдХреВрди рддреБрдордЪреНрдпрд╛ рдбреЗрдЯрд╛рдлреНрд░реЗрдордордзреНрдпреЗ рдХреЙрд▓рдо рдЬреЛрдбрд▓реЗ рд╣реЛрддреЗ рдЬреЗ рддрд┐рдереЗ рдирд╕рд╛рд╡реЗрдд). рддреБрдордЪрд╛ рд╕реНрдХреАрдорд╛ рд╕реНрдерд▓рд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╣рд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдЖрд╣реЗ рдХрд╛рд░рдг рддреЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдШреЛрд╖рд┐рдд рди рдХрд░рддрд╛ рдпреЛрдЧреНрдп рд╕реНрддрдВрдн рдирд╛рд╡реЗ рдЖрдгрд┐ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдЬреЛрдбрддреЗ.

рдирд┐рд╖реНрдХрд░реНрд╖

рд╕реНрдХреАрдорд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рддреБрдордЪреНрдпрд╛ рд╕рд╛рд░рдгреАрд╢реА рд╕реБрд╕рдВрдЧрдд рдирд╕рд▓реЗрд▓реЗ рдХреЛрдгрддреЗрд╣реА рдирд╡реАрди рд╕реНрддрдВрдн рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рд╕реНрдХреАрдорд╛ рдмрджрд▓ рдирд╛рдХрд╛рд░рддреЗ. рд╣реА рдЙрдЪреНрдЪ рдорд╛рдирдХреЗ рд╕реЗрдЯ рдХрд░реВрди рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреА рджреЗрдЦрд░реЗрдЦ рдХрд░реВрди, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЖрдгрд┐ рдЕрднрд┐рдпрдВрддреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдареЗрд╡реВ рд╢рдХрддрд╛рдд рдХреА рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдбреЗрдЯрд╛рдордзреНрдпреЗ рдЙрдЪреНрдЪ рдкрд╛рддрд│реАрдЪреА рдЕрдЦрдВрдбрддрд╛ рдЖрд╣реЗ, рддреЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдЖрдгрд┐ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╕рдВрдкреНрд░реЗрд╖рдг рдХрд░реВрди, рддреНрдпрд╛рдВрдирд╛ рдЕрдзрд┐рдХ рдЪрд╛рдВрдЧрд▓реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рд░реНрдгрдп рдШреЗрдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддрд╛рдд.

рджреБрд╕рд░реАрдХрдбреЗ, рд╕реНрдХреАрдорд╛ рдЙрддреНрдХреНрд░рд╛рдВрддреА рд╕рд░рд▓реАрдХрд░рдг рдХрд░реВрди рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд▓рд╛ рдкреВрд░рдХ рдЖрд╣реЗ рдЖрд░реЛрдк рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рд╕реНрдХреАрдорд╛ рдмрджрд▓. рд╢реЗрд╡рдЯреА, рд╕реНрддрдВрдн рдЬреЛрдбрдгреЗ рдХрдареАрдг рдирд╕рд╛рд╡реЗ.

рдпреЛрдЬрдиреЗрдЪрд╛ рд╕рдХреНрддреАрдЪрд╛ рдЕрд░реНрдЬ рдпрд╛рдВрдЧ рдЖрд╣реЗ, рдЬреЗрдереЗ рдпреЛрдЬрдиреЗрдЪреА рдЙрддреНрдХреНрд░рд╛рдВрддреА рдпрд┐рди рдЖрд╣реЗ. рдПрдХрддреНрд░ рд╡рд╛рдкрд░рд▓реНрдпрд╛рд╕, рд╣реА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЖрд╡рд╛рдЬ рджрд╛рдмрдгреЗ рдЖрдгрд┐ рд╕рд┐рдЧреНрдирд▓ рдЯреНрдпреВрдирд┐рдВрдЧ рдиреЗрд╣рдореАрдкреЗрдХреНрд╖рд╛ рд╕реЛрдкреЗ рдХрд░рддрд╛рдд.

рдпрд╛ рд▓реЗрдЦрд╛рддреАрд▓ рдпреЛрдЧрджрд╛рдирд╛рдмрджреНрджрд▓ рдЖрдореНрд╣реА рдореБрдХреБрд▓ рдореВрд░реНрддреА рдЖрдгрд┐ рдкреНрд░рдгрд╡ рдЖрдирдВрдж рдпрд╛рдВрдЪреЗрд╣реА рдЖрднрд╛рд░ рдорд╛рдиреВ рдЗрдЪреНрдЫрд┐рддреЛ.

рдпрд╛ рдорд╛рд▓рд┐рдХреЗрддреАрд▓ рдЗрддрд░ рд▓реЗрдЦ:

рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХрдордзреНрдпреЗ рдЬрд╛: рд╡реНрдпрд╡рд╣рд╛рд░ рд▓реЙрдЧ рдЕрдирдкреЕрдХ рдХрд░рдгреЗ

рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдЦ

рдбреЗрд▓реНрдЯрд╛ рд▓реЗрдХрд╕рд╣ рдкреНрд░реЛрдбрдХреНрд╢рди-рдЧреНрд░реЗрдб рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ

рдбреЗрдЯрд╛ рд▓реЗрдХ рдореНрд╣рдгрдЬреЗ рдХрд╛рдп?

рдХреЛрд░реНрд╕рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛