āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻšāĻ˛ āĻŦā§āĻ¯āĻžāĻš āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻŽāĻ¤ āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻ¤ āĻŦāĻŋāĻ•āĻžāĻļ āĻ“ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻ¤āĻŋāĻ¯āĻŧāĻžāĻ°

āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻšāĻ˛ āĻŦā§āĻ¯āĻžāĻš āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻŽāĻ¤ āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻ¤ āĻŦāĻŋāĻ•āĻžāĻļ āĻ“ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻ¤āĻŋāĻ¯āĻŧāĻžāĻ°

āĻšā§āĻ¯āĻžāĻ˛ā§‹, āĻšāĻžāĻŦāĻ°! āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻŋ āĻŦā§āĻ¯āĻžāĻš āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻ•āĻžāĻļā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻ¤ā§‡ āĻšāĻžāĻ‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ āĻ•āĻ°ā§āĻĒā§‹āĻ°ā§‡āĻŸ DWH āĻŦāĻž āĻ†āĻĒāĻ¨āĻžāĻ° DataLake āĻāĻ° āĻĒāĻ°āĻŋāĻ•āĻžāĻ āĻžāĻŽā§‹āĻ¤ā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž Apache Airflow āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻŦ (āĻāĻ–āĻ¨ āĻĨā§‡āĻ•ā§‡ Airflow āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡)āĨ¤ āĻāĻŸāĻŋ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ HabrÊ-āĻ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ— āĻĨā§‡āĻ•ā§‡ āĻŦāĻžā§āĻšāĻŋāĻ¤, āĻāĻŦāĻ‚ āĻŽā§‚āĻ˛ āĻ…āĻ‚āĻļā§‡ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦā§‹āĻāĻžāĻ¨ā§‹āĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŦ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° ETL/ELT āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§‚āĻšā§€ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ…āĻ¨ā§āĻ¤āĻ¤ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹āĻŸāĻŋ āĻĻā§‡āĻ–āĻžāĻ° āĻŽā§‚āĻ˛ā§āĻ¯āĨ¤

āĻĒā§‚āĻ°ā§āĻŦā§‡, āĻ†āĻŽāĻŋ āĻ¯āĻ–āĻ¨ Tinkoff āĻŦā§āĻ¯āĻžāĻ‚āĻ•ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤āĻžāĻŽ āĻ¤āĻ–āĻ¨ āĻ†āĻŽāĻŋ DWH āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡āĻ° āĻ‰āĻĒāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ°āĻŋāĻœ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽāĨ¤ āĻāĻ–āĻ¨ āĻ†āĻŽāĻŋ Mail.Ru āĻ—ā§āĻ°ā§āĻĒ āĻŸāĻŋāĻŽā§‡āĻ° āĻ…āĻ‚āĻļ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻ—ā§‡āĻŽāĻŋāĻ‚ āĻāĻ˛āĻžāĻ•āĻžāĻ¯āĻŧ āĻĄā§‡āĻŸāĻž āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ›āĻŋāĨ¤ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡, āĻ¸āĻ‚āĻŦāĻžāĻĻ āĻāĻŦāĻ‚ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻĨā§‡ āĻ†āĻŽāĻžāĻ° āĻĻāĻ˛ āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻāĻ–āĻžāĻ¨ā§‡ āĻĄā§‡āĻŸāĻž āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤

āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻ¨āĻž

āĻ¤ā§‹, āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•āĨ¤ āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻš āĻ•āĻŋ? āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ (āĻŦāĻž āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ¸ā§‡āĻŸ) āĻ•āĻžāĻœā§‡āĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻ•āĻžāĻļ, āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ°ā§€āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻžāĨ¤ āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻšā§‡āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯: āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž (āĻŦāĻŋāĻ•āĻžāĻļ) āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻœā§‡āĻ•ā§āĻŸ āĻāĻŦāĻ‚ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻŽā§‡āĻ¨ā§āĻŸ āĻ¸āĻ‚āĻ—āĻ āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻŋāĻ° āĻ…āĻ¨ā§‡āĻ• āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡, āĻ†āĻĒāĻ¨āĻžāĻ° (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ) ETL āĻĒā§āĻ°ā§‹āĻœā§‡āĻ•ā§āĻŸāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻĒā§āĻ°āĻœā§‡āĻ•ā§āĻŸ, āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋāĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ‡āĻšā§āĻ›āĻžāĻŽāĻ¤ā§‹ āĻ¸āĻ‚āĻ—āĻ āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻĒāĻ°āĻŋāĻ•āĻžāĻ āĻžāĻŽā§‹, āĻĻāĻ˛ā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻāĻŦāĻ‚ āĻŦāĻŋāĻļā§‡āĻˇāĻ¤ā§āĻŦ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž. āĻ¯āĻ¨ā§āĻ¤ā§āĻ°āĻ—āĻ¤āĻ­āĻžāĻŦā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¸āĻšāĻœāĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ PyCharm + Git āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨āĨ¤ āĻāĻŸāĻž āĻŦāĻŋāĻ¸ā§āĻŽāĻ¯āĻŧāĻ•āĻ° āĻāĻŦāĻ‚ āĻ–ā§āĻŦ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ•!

āĻāĻ–āĻ¨ āĻ†āĻ¸ā§āĻ¨ āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻšā§‡āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¸āĻ¤ā§āĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–āĻŋāĨ¤ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻžāĻ°āĻŽāĻ°ā§āĻŽ āĻāĻŦāĻ‚ āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ āĻŦā§‹āĻāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž, āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻ°ā§āĻŦā§‹āĻ¤ā§āĻ¤āĻŽāĻ­āĻžāĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ° āĻ¸āĻ‚āĻ—āĻ āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¸āĻ¤ā§āĻ¤āĻž āĻšāĻ˛ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ¤ āĻ…ā§āĻ¯āĻžāĻ¸āĻžāĻ‡āĻ•ā§āĻ˛āĻŋāĻ• āĻ—ā§āĻ°āĻžāĻĢ (āĻāĻ° āĻĒāĻ°ā§‡ DAG āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡)āĨ¤

DAG

āĻāĻ•āĻŸāĻŋ DAG āĻšāĻ˛ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻžāĻœā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻ…āĻ°ā§āĻĨāĻĒā§‚āĻ°ā§āĻŖ āĻ¸āĻ‚āĻ˜ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§‚āĻšā§€ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ āĻ•āĻ ā§‹āĻ°āĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•ā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨āĨ¤ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ DAG āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻ¤ā§āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ“āĻ¯āĻŧā§‡āĻŦ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡:

āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻšāĻ˛ āĻŦā§āĻ¯āĻžāĻš āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻŽāĻ¤ āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻ¤ āĻŦāĻŋāĻ•āĻžāĻļ āĻ“ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻ¤āĻŋāĻ¯āĻŧāĻžāĻ°

DAG āĻāĻ° āĻŽāĻ¤ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻšāĻ˛ āĻŦā§āĻ¯āĻžāĻš āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻŽāĻ¤ āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻ¤ āĻŦāĻŋāĻ•āĻžāĻļ āĻ“ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻ¤āĻŋāĻ¯āĻŧāĻžāĻ°

āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°, āĻāĻ•āĻŸāĻŋ DAG āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸ āĻ˛ā§‡āĻ–ā§‡āĻ¨ āĻ¯āĻžāĻ° āĻ‰āĻĒāĻ° DAG-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ•āĻžāĻœāĻ—ā§āĻ˛āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ¸āĻ¤ā§āĻ¤āĻžāĻ¯āĻŧ āĻ†āĻ¸āĻŋ: āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĨ¤

āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻžāĻ°

āĻāĻ•āĻŸāĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻšāĻ˛ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ¤ā§āĻ¤āĻž āĻ¯āĻžāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§‡ āĻ•āĻžāĻœā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻœā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ•ā§€ āĻ˜āĻŸāĻŦā§‡ āĻ¤āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤ āĻ—āĻŋāĻŸāĻšāĻžāĻŦ āĻĨā§‡āĻ•ā§‡ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻ°āĻŋāĻ˛āĻŋāĻœ āĻšāĻ¯āĻŧ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡. āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

  • BashOperator - āĻāĻ•āĻŸāĻŋ bash āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĨ¤
  • PythonOperator - āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻ•ā§‹āĻĄ āĻ•āĻ˛ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĨ¤
  • āĻ‡āĻŽā§‡āĻ‡āĻ˛ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° — āĻ‡āĻŽā§‡āĻ˛ āĻĒāĻžāĻ āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĨ¤
  • HTTPOperator - HTTP āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĨ¤
  • SqlOperator - SQL āĻ•ā§‹āĻĄ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĨ¤
  • āĻ¸ā§‡āĻ¨ā§āĻ¸āĻ° āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĒā§‡āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° (āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻ†āĻ—āĻŽāĻ¨, āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ, āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻ¨, API āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž, āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)āĨ¤

āĻ†āĻ°ā§‹ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻ†āĻ›ā§‡: DockerOperator, HiveOperator, S3FileTransferOperator, PrestoToMysqlOperator, SlackOperatorāĨ¤

āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻŽāĻ°āĻž MongoDBToHiveViaHdfsTransfer, MongoDB āĻĨā§‡āĻ•ā§‡ Hive-āĻ āĻ¨āĻĨāĻŋ āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻāĻŦāĻ‚ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸: CHLoadFromHiveOperator āĻāĻŦāĻ‚ CHTableLoaderOperator. āĻŽā§‚āĻ˛āĻ¤, āĻ¯āĻ¤ āĻ¤āĻžāĻĄāĻŧāĻžāĻ¤āĻžāĻĄāĻŧāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ˜āĻ¨ āĻ˜āĻ¨ āĻŽā§ŒāĻ˛āĻŋāĻ• āĻŦāĻŋāĻŦā§ƒāĻ¤āĻŋāĻ¤ā§‡ āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻ•ā§‹āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻŋāĻŦā§ƒāĻ¤āĻŋāĻ¤ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ•āĻĨāĻž āĻ­āĻžāĻŦāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻāĻŸāĻŋ āĻ†āĻ°āĻ“ āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨āĻ•ā§‡ āĻ¸āĻšāĻœ āĻ•āĻ°āĻŦā§‡, āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĻĻā§‡āĻ° āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°āĻŦā§‡āĻ¨āĨ¤

āĻāĻ° āĻĒāĻ°ā§‡, āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻžāĻœā§‡āĻ° āĻĻā§ƒāĻˇā§āĻŸāĻžāĻ¨ā§āĻ¤āĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻž āĻĻāĻ°āĻ•āĻžāĻ°, āĻāĻŦāĻ‚ āĻāĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§‚āĻšā§€ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤

āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§‚āĻšā§€

āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻāĻ° āĻŸāĻžāĻ¸ā§āĻ• āĻļāĻŋāĻĄāĻŋāĻ‰āĻ˛āĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¸ā§‡āĻ˛āĻžāĻ°āĻŋ. āĻ¸ā§‡āĻ˛ā§‡āĻ°āĻŋ āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋ āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻŦāĻŋāĻ‰āĻŸā§‡āĻĄ āĻ•āĻžāĻ°ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻšā§‡āĻ° āĻĻāĻŋāĻ•ā§‡, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻžāĻœ āĻĒā§āĻ˛āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻŦāĻŋāĻ­āĻ•ā§āĻ¤āĨ¤ āĻĒā§āĻ˛āĻ—ā§āĻ˛āĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤, āĻ¤āĻžāĻĻā§‡āĻ° āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ āĻ‰āĻ¤ā§āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ•āĻžāĻœā§‡āĻ° āĻšāĻžāĻĒāĻ•ā§‡ āĻ¸ā§€āĻŽāĻŋāĻ¤ āĻ•āĻ°āĻž āĻŦāĻž DWH-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ•āĻžāĻœāĻ—ā§āĻ˛āĻŋ āĻŸāĻžāĻ‡āĻĒ āĻ•āĻ°āĻžāĨ¤ āĻĒā§āĻ˛āĻ—ā§āĻ˛āĻŋ āĻ“āĻ¯āĻŧā§‡āĻŦ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻšāĻ˛ āĻŦā§āĻ¯āĻžāĻš āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻŽāĻ¤ āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻ¤ āĻŦāĻŋāĻ•āĻžāĻļ āĻ“ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻ¤āĻŋāĻ¯āĻŧāĻžāĻ°

āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ˛ā§‡āĻ° āĻ¸ā§āĻ˛āĻŸā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§€āĻŽāĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ DAG āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ˛ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ:

ALERT_MAILS =  Variable.get("gv_mail_admin_dwh")
DAG_NAME = 'dma_load'
OWNER = 'Vasya Pupkin'
DEPENDS_ON_PAST = True
EMAIL_ON_FAILURE = True
EMAIL_ON_RETRY = True
RETRIES = int(Variable.get('gv_dag_retries'))
POOL = 'dma_pool'
PRIORITY_WEIGHT = 10

start_dt = datetime.today() - timedelta(1)
start_dt = datetime(start_dt.year, start_dt.month, start_dt.day)

default_args = {
    'owner': OWNER,
    'depends_on_past': DEPENDS_ON_PAST,
    'start_date': start_dt,
    'email': ALERT_MAILS,
    'email_on_failure': EMAIL_ON_FAILURE,
    'email_on_retry': EMAIL_ON_RETRY,
    'retries': RETRIES,
    'pool': POOL,
    'priority_weight': PRIORITY_WEIGHT
}
dag = DAG(DAG_NAME, default_args=default_args)
dag.doc_md = __doc__

DAG āĻ¸ā§āĻ¤āĻ°ā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ˛ āĻŸāĻžāĻ¸ā§āĻ• āĻ˛ā§‡āĻ­ā§‡āĻ˛ā§‡ āĻ“āĻ­āĻžāĻ°āĻ°āĻžāĻ‡āĻĄ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž, āĻļāĻŋāĻĄāĻŋāĻ‰āĻ˛āĻžāĻ°, āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹āĻ¤ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻžāĻœā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§€āĨ¤ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡, āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻ• āĻ•āĻžāĻ°ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŽā§‡āĻ•āĻžāĻ¨āĻŋāĻ•ā§āĻ¸ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻ•āĻžāĻœāĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻ†āĻ—ā§‡ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ§āĻžāĻĒ āĻ…āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ•āĻ°ā§‡:

  1. āĻĄāĻŋāĻāĻœāĻŋ-āĻ¤ā§‡ āĻ†āĻ—ā§‡āĻ° āĻ•āĻžāĻœāĻ—ā§āĻ˛ā§‹ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡; āĻ¨āĻ¤ā§āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋāĻŦāĻĻā§āĻ§ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
  2. āĻ¸āĻžāĻ°āĻŋāĻŸāĻŋ āĻ•āĻžāĻœā§‡āĻ° āĻ…āĻ—ā§āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ°ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡ āĻ¸āĻžāĻœāĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧ (āĻ…āĻ—ā§āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ°āĻ—ā§āĻ˛āĻŋāĻ“ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡), āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻĒā§āĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡āĻ° āĻ¸ā§āĻ˛āĻŸ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻŦā§‡ āĻ•āĻžāĻœāĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
  3. āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡ āĻ•āĻ°ā§āĻŽā§€ āĻ¸ā§‡āĻ˛āĻžāĻ°āĻŋ āĻ†āĻ›ā§‡, āĻŸāĻžāĻ¸ā§āĻ• āĻāĻŸāĻŋ āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧ; āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻŸāĻŋāĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¯ā§‡ āĻ•āĻžāĻœāĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨ āĻ¤āĻž āĻāĻ• āĻŦāĻž āĻ…āĻ¨ā§āĻ¯ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧāĨ¤

āĻ¯āĻĨā§‡āĻˇā§āĻŸ āĻ¸āĻšāĻœāĨ¤

āĻļāĻŋāĻĄāĻŋāĻ‰āĻ˛āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ DAG-āĻāĻ° āĻ¸ā§‡āĻŸā§‡ āĻāĻŦāĻ‚ DAG-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻžāĻœ āĻšāĻžāĻ˛āĻžāĻ¯āĻŧāĨ¤

DAG-āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, DAG-āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§‚āĻšā§€ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:

dag = DAG(DAG_NAME, default_args=default_args, schedule_interval='@hourly')

āĻ°ā§‡āĻĄāĻŋāĻŽā§‡āĻĄ āĻĒā§āĻ°āĻŋāĻ¸ā§‡āĻŸāĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: @once, @hourly, @daily, @weekly, @monthly, @yearly.

āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§āĻ°āĻ¨ āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨:

dag = DAG(DAG_NAME, default_args=default_args, schedule_interval='*/10 * * * *')

āĻŽā§ƒāĻ¤ā§āĻ¯ā§āĻĻāĻ¨ā§āĻĄ āĻ¤āĻžāĻ°āĻŋāĻ–

āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¤āĻž āĻŦā§‹āĻāĻžāĻ° āĻœāĻ¨ā§āĻ¯, DAG-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻĄā§‡āĻŸ āĻ•ā§€ āĻ¤āĻž āĻŦā§‹āĻāĻž āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹āĻ¤ā§‡, DAG-āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻĄā§‡āĻŸ āĻĄāĻžāĻ‡āĻŽā§‡āĻ¨āĻļāĻ¨ āĻĨāĻžāĻ•ā§‡, āĻ…āĻ°ā§āĻĨāĻžā§Ž, DAG-āĻāĻ° āĻ•āĻžāĻœā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§‚āĻšā§€āĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡, āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻĄā§‡āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŸāĻžāĻ¸ā§āĻ• āĻ‡āĻ¨āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻ¤āĻžāĻ°āĻŋāĻ–ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻŸāĻžāĻ¸ā§āĻ•āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ - āĻŦāĻž, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ āĻĄāĻŋāĻāĻœāĻŋ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻ¤āĻžāĻ°āĻŋāĻ–ā§‡ āĻāĻ•āĻ‡ āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻāĻ–āĻžāĻ¨ā§‡ āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ­āĻžāĻŦā§‡ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻšāĻ˛ āĻŦā§āĻ¯āĻžāĻš āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻŽāĻ¤ āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻ¤ āĻŦāĻŋāĻ•āĻžāĻļ āĻ“ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻ¤āĻŋāĻ¯āĻŧāĻžāĻ°

āĻĻā§āĻ°ā§āĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤ (āĻŦāĻž āĻ¸ā§ŒāĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤: āĻāĻŸāĻŋ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡), āĻ¯āĻĻāĻŋ āĻĄāĻŋāĻāĻœāĻŋ-āĻ¤ā§‡ āĻŸāĻžāĻ¸ā§āĻ•ā§‡āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻĄā§‡āĻŸā§‡ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨āĻŸāĻŋ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻāĻ—āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻŦā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻŦāĻŋāĻ—āĻ¤ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻĄā§‡āĻŸāĻž āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ–āĻžāĻ°āĻžāĻĒ, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ–āĻžāĻ°āĻžāĻĒ āĻ•āĻžāĻ°āĻŖ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻĒā§āĻ¨āĻ°ā§āĻ¤ā§āĻĒāĻžāĻĻāĻ¨āĻ¯ā§‹āĻ—ā§āĻ¯āĻ¤āĻž āĻšāĻžāĻ°āĻŋāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡ (āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ—āĻŋāĻŸ āĻĨā§‡āĻ•ā§‡ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻĢā§‡āĻ°āĻ¤ āĻĻāĻŋāĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ•ā§€ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•ā§‡āĻ‰ āĻŦāĻŋāĻ°āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻ•āĻŦāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨, āĻ¯ā§‡āĻ­āĻžāĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨)āĨ¤

āĻ•āĻžāĻœ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

DAG āĻāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻšāĻ˛ āĻĒāĻžāĻ‡āĻĨāĻ¨ā§‡ āĻ•ā§‹āĻĄ, āĻ¤āĻžāĻ‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ•ā§‹āĻĄā§‡āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ•āĻŽāĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻ–ā§āĻŦ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻļāĻžāĻ°ā§āĻĄ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ¸āĻšāĨ¤ āĻ§āĻ°āĻž āĻ¯āĻžāĻ• āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰ā§ŽāĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¤āĻŋāĻ¨āĻŸāĻŋ MySQL āĻļāĻžāĻ°ā§āĻĄ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋāĻ¤ā§‡ āĻ†āĻ°ā§‹āĻšāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ•āĻŋāĻ›ā§ āĻĄā§‡āĻŸāĻž āĻ¤ā§āĻ˛āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ¤āĻžāĻ›āĻžāĻĄāĻŧāĻž, āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨āĻ­āĻžāĻŦā§‡ āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛āĻ­āĻžāĻŦā§‡āĨ¤ DAG-āĻ¤ā§‡ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻāĻ‡āĻ°āĻ•āĻŽ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

connection_list = lv.get('connection_list')

export_profiles_sql = '''
SELECT
  id,
  user_id,
  nickname,
  gender,
  {{params.shard_id}} as shard_id
FROM profiles
'''

for conn_id in connection_list:
    export_profiles = SqlToHiveViaHdfsTransfer(
        task_id='export_profiles_from_' + conn_id,
        sql=export_profiles_sql,
        hive_table='stg.profiles',
        overwrite=False,
        tmpdir='/data/tmp',
        conn_id=conn_id,
        params={'shard_id': conn_id[-1:], },
        compress=None,
        dag=dag
    )
    export_profiles.set_upstream(exec_truncate_stg)
    export_profiles.set_downstream(load_profiles)

DAG āĻāĻ‡ āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ:

āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻšāĻ˛ āĻŦā§āĻ¯āĻžāĻš āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻŽāĻ¤ āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻ¤ āĻŦāĻŋāĻ•āĻžāĻļ āĻ“ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻ¤āĻŋāĻ¯āĻŧāĻžāĻ°

āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ DAG āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻļāĻžāĻ°ā§āĻĄ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻž āĻ¸āĻ°āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ†āĻ°āĻžāĻŽāĻĒā§āĻ°āĻĻ!

āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻ°āĻ“ āĻœāĻŸāĻŋāĻ˛ āĻ•ā§‹āĻĄ āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻ†āĻ•āĻžāĻ°ā§‡ āĻ‰āĻ¤ā§āĻ¸āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§āĻ¨ āĻŦāĻž āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§āĻ¨, āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻāĻŦāĻ‚, DWH āĻĒāĻ°āĻŋāĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœā§‡ N āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯āĨ¤ āĻ…āĻĨāĻŦāĻž, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ API āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻž āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ†āĻ•āĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ‡ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ DAG-āĻ¤ā§‡ N āĻ•āĻžāĻœ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, API-āĻ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛āĻ¤āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ˛ā§‡ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ¸ā§āĻ•ā§āĻ°ā§āĻ¯āĻžāĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ API āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¤āĻĨā§āĻ¯āĨ¤ āĻ¨āĻŽāĻ¨ā§€āĻ¯āĻŧ !

āĻ­āĻžāĻ¨ā§āĻĄāĻžāĻ°

āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋ āĻ†āĻ›ā§‡, āĻāĻ•āĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ (āĻŽāĻžāĻ‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻŦāĻž āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻ¸ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻ¸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡), āĻ¯āĻž āĻ•āĻžāĻœāĻ—ā§āĻ˛āĻŋāĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻž, āĻĄāĻŋāĻāĻœāĻŋ, āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸, āĻ—ā§āĻ˛ā§‹āĻŦāĻžāĻ˛ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻŋ āĻŦāĻ˛āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¯ā§‡ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹āĻ¤ā§‡ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ–ā§āĻŦāĻ‡ āĻ¸āĻšāĻœ (āĻĒā§āĻ°āĻžāĻ¯āĻŧ 20āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛) āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋāĻ° āĻ‰āĻĒāĻ°ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ•ā§‹āĻ¨ā§‹ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨āĨ¤ āĻ†āĻŽāĻŋ āĻ‡āĻ¨āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸāĻŋāĻ•āĻž āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ¤ā§‡ 100500 āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ•āĻĨāĻž āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻŋ, āĻ¯ā§‡āĻ—ā§āĻ˛āĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻŦā§‹āĻāĻžāĻ° āĻ†āĻ—ā§‡ āĻĻā§€āĻ°ā§āĻ˜ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

āĻĒāĻ°ā§āĻ¯āĻŦā§‡āĻ•ā§āĻˇāĻŖ

āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§‡āĻ° āĻ¸āĻ°āĻ˛āĻ¤āĻž āĻĻā§‡āĻ“āĻ¯āĻŧāĻž, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ¸ā§āĻ• āĻĒāĻ°ā§āĻ¯āĻŦā§‡āĻ•ā§āĻˇāĻŖ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ•āĨ¤ āĻ†āĻŽāĻ°āĻž āĻœā§‡āĻĒā§‡āĻ˛āĻŋāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨ā§‹āĻŸāĻĒā§āĻ¯āĻžāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻ•āĻžāĻœā§‡āĻ° āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻĻā§‡āĻ–āĻŋ:

āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻšāĻ˛ āĻŦā§āĻ¯āĻžāĻš āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻŽāĻ¤ āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻ¤ āĻŦāĻŋāĻ•āĻžāĻļ āĻ“ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻ¤āĻŋāĻ¯āĻŧāĻžāĻ°

āĻāĻŸāĻŋ Airflow āĻāĻ° āĻ“āĻ¯āĻŧā§‡āĻŦ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸āĻ“ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻšāĻ˛ āĻŦā§āĻ¯āĻžāĻš āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻŽāĻ¤ āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻ¤ āĻŦāĻŋāĻ•āĻžāĻļ āĻ“ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻ¤āĻŋāĻ¯āĻŧāĻžāĻ°

āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻ°āĻž āĻŸā§‡āĻ˛āĻŋāĻ—ā§āĻ°āĻžāĻŽā§‡ āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ¸ā§āĻ•ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻšāĻ˛āĻŽāĻžāĻ¨ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ, āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ˜āĻŸā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻŸā§‡āĻ˛āĻŋāĻ—ā§āĻ°āĻžāĻŽā§‡ āĻ—ā§āĻ°ā§āĻĒāĻŸāĻŋāĻ•ā§‡ āĻ¸ā§āĻĒā§āĻ¯āĻžāĻŽ āĻ•āĻ°ā§‡, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¸āĻŽāĻ—ā§āĻ° āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻāĻŦāĻ‚ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻž āĻĻāĻ˛ āĻĨāĻžāĻ•ā§‡āĨ¤

āĻ†āĻŽāĻ°āĻž āĻŸā§‡āĻ˛āĻŋāĻ—ā§āĻ°āĻžāĻŽ (āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ) āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ¤ā§āĻ•ā§āĻˇāĻŖāĻŋāĻ• āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒāĻžāĻ‡ āĻāĻŦāĻ‚ āĻœā§‡āĻĒā§‡āĻ˛āĻŋāĻ¨ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹āĻ¤ā§‡ āĻ•āĻžāĻœā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻŽāĻ—ā§āĻ°āĻŋāĻ• āĻšāĻŋāĻ¤ā§āĻ° āĻĒāĻžāĻ‡āĨ¤

āĻŽā§‹āĻŸā§‡

āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻš āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸, āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻŸāĻŋ āĻĨā§‡āĻ•ā§‡ āĻ…āĻ˛ā§ŒāĻ•āĻŋāĻ• āĻ˜āĻŸāĻ¨āĻž āĻ†āĻļāĻž āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻž āĻĻā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻĨāĻžāĻ•ā§āĻ¨āĨ¤ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ…āĻ°ā§āĻœāĻ¨āĻ¯ā§‹āĻ—ā§āĻ¯, āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ•āĻ°ā§āĻ¨, āĻāĻŸāĻŋ āĻŽā§‚āĻ˛ā§āĻ¯āĻŦāĻžāĻ¨āĨ¤ āĻŦāĻŋāĻ•āĻžāĻļā§‡āĻ° āĻ—āĻ¤āĻŋ, āĻ¨āĻŽāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž, āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ¸āĻšāĻœāĻ¤āĻž - āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻŦā§‡āĻ¨āĨ¤ āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ¸āĻ‚āĻ—āĻ āĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ— āĻĻāĻŋāĻ¤ā§‡ āĻšāĻŦā§‡, āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻšā§‡āĻ° āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§€āĻ˛āĻ¤āĻž: āĻ…āĻ˛ā§ŒāĻ•āĻŋāĻ• āĻ˜āĻŸāĻ¨āĻž āĻ˜āĻŸāĻŦā§‡ āĻ¨āĻžāĨ¤

āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻĒā§āĻ°āĻ¤āĻŋāĻĻāĻŋāĻ¨ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 6,5 āĻšāĻžāĻœāĻžāĻ° āĻ•āĻžāĻœ. āĻ¤āĻžāĻ°āĻž āĻšāĻ°āĻŋāĻ¤ā§āĻ°ā§‡ āĻŦā§‡āĻļ āĻ­āĻŋāĻ¨ā§āĻ¨āĨ¤ āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻāĻŦāĻ‚ āĻ–ā§āĻŦ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ‰āĻ¤ā§āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻŽā§‚āĻ˛ DWH-āĻ āĻĄā§‡āĻŸāĻž āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻžāĻ° āĻ•āĻžāĻœ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻĒā§āĻ°āĻ§āĻžāĻ¨ DWH-āĻāĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ•āĻžāĻœ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻāĻ•āĻŸāĻŋ āĻĻā§āĻ°ā§āĻ¤ DWH-āĻ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻžāĻ° āĻ•āĻžāĻœ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ•āĻžāĻœ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ - āĻāĻŦāĻ‚ āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻš āĻĻāĻŋāĻ¨ā§‡āĻ° āĻĒāĻ° āĻĻāĻŋāĻ¨ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻŦ āĻšāĻŋāĻŦāĻŋāĻ¯āĻŧā§‡. āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¯āĻŧ āĻ•āĻĨāĻž āĻŦāĻ˛āĻ›āĻŋ, āĻāĻ‡ 2,3 āĻšāĻžāĻœāĻžāĻ° DWH (Hadoop) āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻœāĻŸāĻŋāĻ˛āĻ¤āĻžāĻ° ELT āĻ•āĻžāĻœ, āĻĒā§āĻ°āĻžāĻ¯āĻŧāĨ¤ 2,5 āĻļāĻ¤ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻ¸ā§‚āĻ¤ā§āĻ°, āĻāĻŸāĻŋ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĻāĻ˛ 4 ETL āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°, āĻ¯āĻž DWH-āĻ ETL āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻāĻŦāĻ‚ DWH-āĻāĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡ ELT āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚-āĻ āĻŦāĻŋāĻ­āĻ•ā§āĻ¤ āĻāĻŦāĻ‚ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ†āĻ°āĻ“ āĻāĻ•āĻœāĻ¨ āĻ…ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨, āĻ¯āĻžāĻ°āĻž āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤

āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž

āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ…āĻ¨āĻŋāĻŦāĻžāĻ°ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻŦāĻžāĻĄāĻŧāĻ›ā§‡, āĻāĻŦāĻ‚ āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻšā§‡āĻ° āĻĒāĻ°āĻŋāĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¯ā§‡ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ•āĻžāĻœāĻŸāĻŋ āĻ•āĻ°āĻŦ āĻ¤āĻž āĻšāĻ˛ āĻ¸ā§āĻ•ā§‡āĻ˛āĻŋāĻ‚āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡, āĻ¸ā§‡āĻ˛āĻžāĻ°āĻŋ āĻ•āĻ°ā§āĻŽā§€āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻœā§‹āĻĄāĻŧāĻž āĻĒāĻž āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡, āĻāĻŦāĻ‚ āĻ•āĻžāĻœā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖā§‡āĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŦ-āĻ¨āĻ•āĻ˛ āĻŽāĻžāĻĨāĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ā§ˇ

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

āĻāĻŸāĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ†āĻŽāĻŋ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§‹ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻ˛āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻāĻŽāĻ¨ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻ†āĻŽāĻŋ āĻŽā§‚āĻ˛ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋ āĻšāĻžāĻ‡āĻ˛āĻžāĻ‡āĻŸ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ–āĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•ā§āĻˇā§āĻ§āĻž āĻ†āĻ¸ā§‡, āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§‡ āĻĻā§‡āĻ–ā§āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ­āĻžāĻ˛ā§‹ āĻ˛āĻžāĻ—āĻŦā§‡ :)

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨