āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

āĻšā§‡ āĻšāĻžāĻŦāĻ°! āĻ†āĻœ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦ āĻ¯āĻž āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Apache Kafka āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸ā§āĻŸā§āĻ°ā§€āĻŽāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻŦā§‡ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖā§‡āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ AWS RDS āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ˛āĻŋāĻ–āĻŦā§‡ā§ˇ

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

āĻœāĻžāĻĻā§ āĻāĻŦāĻ‚ āĻœāĻžāĻĻā§ āĻŽāĻ¨ā§āĻ¤ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ - āĻ•āĻžāĻŸāĻž āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĒāĻĄāĻŧā§āĻ¨! āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž!

āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚
(āĻ›āĻŦāĻŋāĻ° āĻ¸ā§‚āĻ¤ā§āĻ°)

āĻ­ā§‚āĻŽāĻŋāĻ•āĻž

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

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

āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°

āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨:

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

āĻ•āĻžāĻĢāĻ•āĻž āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻāĻŦāĻ‚ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹

āĻ•āĻžāĻĢāĻ•āĻž āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻœāĻžāĻ­āĻž āĻ†āĻ›ā§‡, āĻ•āĻžāĻ°āĻŖ JVM āĻ•āĻžāĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ:

sudo apt-get update 
sudo apt-get install default-jre
java -version

āĻ•āĻžāĻĢāĻ•āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•:

sudo useradd kafka -m
sudo passwd kafka
sudo adduser kafka sudo

āĻāĻ°āĻĒāĻ°ā§‡, āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻ“āĻ¯āĻŧā§‡āĻŦāĻ¸āĻžāĻ‡āĻŸ āĻĨā§‡āĻ•ā§‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻŋāĻŸāĻŸāĻŋ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§āĻ¨:

wget -P /YOUR_PATH "http://apache-mirror.rbc.ru/pub/apache/kafka/2.2.0/kafka_2.12-2.2.0.tgz"

āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻ†āĻ°ā§āĻ•āĻžāĻ‡āĻ­ āĻ†āĻ¨āĻĒā§āĻ¯āĻžāĻ• āĻ•āĻ°ā§āĻ¨:

tar -xvzf /YOUR_PATH/kafka_2.12-2.2.0.tgz
ln -s /YOUR_PATH/kafka_2.12-2.2.0 kafka

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

vim ~/kafka/config/server.properties

āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻļā§‡āĻˇā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨:

delete.topic.enable = true

āĻ•āĻžāĻĢāĻ•āĻž āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ ZooKeeper āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻļā§āĻ°ā§ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ†āĻŽāĻ°āĻž āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯āĻ•āĻžāĻ°ā§€ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦ āĻ¯āĻž āĻ•āĻžāĻĢāĻ•āĻž āĻŦāĻŋāĻ¤āĻ°āĻŖā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻ¸ā§‡:

Cd ~/kafka
bin/zookeeper-server-start.sh config/zookeeper.properties

ZooKeeper āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻŸāĻžāĻ°ā§āĻŽāĻŋāĻ¨āĻžāĻ˛ā§‡ āĻ•āĻžāĻĢāĻ•āĻž āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻļā§āĻ°ā§ āĻ•āĻ°āĻŋ:

bin/kafka-server-start.sh config/server.properties

āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic transaction

āĻ†āĻ¸ā§āĻ¨ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻŋ āĻ¯ā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻ• āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

bin/kafka-topics.sh --describe --zookeeper localhost:2181

āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

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

āĻĒā§āĻ°āĻ¯ā§‹āĻœāĻ• āĻ˛ā§‡āĻ–āĻž

āĻĒā§āĻ°āĻ¯ā§‹āĻœāĻ• āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŽ āĻĄā§‡āĻŸāĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦā§‡ - āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ 100āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĨ¤ āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŽ āĻĄā§‡āĻŸāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻ†āĻŽāĻ°āĻž āĻ¤āĻŋāĻ¨āĻŸāĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻ¸āĻŽāĻ¨ā§āĻŦāĻŋāĻ¤ āĻāĻ•āĻŸāĻŋ āĻ…āĻ­āĻŋāĻ§āĻžāĻ¨ āĻŦāĻ˛āĻ¤ā§‡ āĻŦā§‹āĻāĻžāĻ¯āĻŧ:

  • āĻļāĻžāĻ–āĻž - āĻ•ā§āĻ°ā§‡āĻĄāĻŋāĻŸ āĻĒā§āĻ°āĻ¤āĻŋāĻˇā§āĻ āĻžāĻ¨ā§‡āĻ° āĻŦāĻŋāĻ•ā§āĻ°āĻ¯āĻŧ āĻŦāĻŋāĻ¨ā§āĻĻā§āĻ° āĻ¨āĻžāĻŽ;
  • āĻŽā§āĻĻā§āĻ°āĻž - āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻŽā§āĻĻā§āĻ°āĻž;
  • āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ - āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ā§‡āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ. āĻŦā§āĻ¯āĻžāĻ™ā§āĻ•ā§‡āĻ° āĻ•āĻžāĻ°ā§‡āĻ¨ā§āĻ¸āĻŋ āĻ•ā§āĻ°āĻ¯āĻŧ āĻšāĻ˛ā§‡ āĻŸāĻžāĻ•āĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ§āĻ¨āĻžāĻ¤ā§āĻŽāĻ• āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ•ā§āĻ°āĻŋ āĻšāĻ˛ā§‡ āĻ¨ā§‡āĻ¤āĻŋāĻŦāĻžāĻšāĻ• āĻšāĻŦā§‡āĨ¤

āĻĒā§āĻ°āĻ¯ā§‹āĻœāĻ•ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‹āĻĄ āĻāĻ‡ āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ:

from numpy.random import choice, randint

def get_random_value():
    new_dict = {}

    branch_list = ['Kazan', 'SPB', 'Novosibirsk', 'Surgut']
    currency_list = ['RUB', 'USD', 'EUR', 'GBP']

    new_dict['branch'] = choice(branch_list)
    new_dict['currency'] = choice(currency_list)
    new_dict['amount'] = randint(-100, 100)

    return new_dict

āĻāĻ°āĻĒāĻ°ā§‡, āĻĒāĻžāĻ āĻžāĻ¨ā§‹āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯, JSON āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸā§‡:

from kafka import KafkaProducer    

producer = KafkaProducer(bootstrap_servers=['localhost:9092'],
                             value_serializer=lambda x:dumps(x).encode('utf-8'),
                             compression_type='gzip')
my_topic = 'transaction'
data = get_random_value()

try:
    future = producer.send(topic = my_topic, value = data)
    record_metadata = future.get(timeout=10)
    
    print('--> The message has been sent to a topic: 
            {}, partition: {}, offset: {}' 
            .format(record_metadata.topic,
                record_metadata.partition,
                record_metadata.offset ))   
                             
except Exception as e:
    print('--> It seems an Error occurred: {}'.format(e))

finally:
    producer.flush()

āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻŽāĻ°āĻž āĻŸāĻžāĻ°ā§āĻŽāĻŋāĻ¨āĻžāĻ˛ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻĒāĻžāĻ‡:

āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

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

āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ†āĻĒāĻž āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻāĻ•āĻŸāĻŋ āĻŦāĻšā§āĻŽā§āĻ–ā§€ āĻāĻŦāĻ‚ āĻ‰āĻšā§āĻš āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻŋāĻ‚ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽāĨ¤

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

āĻāĻ‡ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻŸāĻŋ āĻ¸ā§āĻ•āĻžāĻ˛āĻžāĻ¯āĻŧ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¤āĻžāĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻāĻŸāĻŋ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:

sudo apt-get install scala

āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ“āĻ¯āĻŧā§‡āĻŦāĻ¸āĻžāĻ‡āĻŸ āĻĨā§‡āĻ•ā§‡ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§āĻ¨:

wget "http://mirror.linux-ia64.org/apache/spark/spark-2.4.2/spark-2.4.2-bin-hadoop2.7.tgz"

āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻ—āĻžāĻ°āĻŸāĻŋ āĻ†āĻ¨āĻĒā§āĻ¯āĻžāĻ• āĻ•āĻ°ā§āĻ¨:

sudo tar xvf spark-2.4.2/spark-2.4.2-bin-hadoop2.7.tgz -C /usr/local/spark

āĻŦā§āĻ¯āĻžāĻļ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻĒāĻĨ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨:

vim ~/.bashrc

āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ•ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ˛āĻžāĻ‡āĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨:

SPARK_HOME=/usr/local/spark
export PATH=$SPARK_HOME/bin:$PATH

bashrc āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ āĻ¨ā§€āĻšā§‡āĻ° āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻŸāĻŋ āĻšāĻžāĻ˛āĻžāĻ¨:

source ~/.bashrc

AWS PostgreSQL āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻāĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻ…āĻŦāĻļā§‡āĻˇ, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸ā§āĻŸā§āĻ°ā§€āĻŽ āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•ā§ƒāĻ¤ āĻ¤āĻĨā§āĻ¯ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°āĻŦāĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻ°āĻž AWS RDS āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦāĨ¤

AWS āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ āĻ¯āĻžāĻ¨ -> AWS RDS -> āĻĄā§‡āĻŸāĻžāĻŦā§‡āĻ¸ -> āĻĄā§‡āĻŸāĻžāĻŦā§‡āĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨:
āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

PostgreSQL āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻŦā§‹āĻ¤āĻžāĻŽā§‡ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨:
āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

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

āĻāĻ°āĻĒāĻ°ā§‡, āĻĢā§āĻ°āĻŋ āĻŸāĻŋāĻ¯āĻŧāĻžāĻ° āĻŦāĻžāĻ•ā§āĻ¸āĻŸāĻŋ āĻšā§‡āĻ• āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻ° āĻĒāĻ°ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ t2.micro āĻ•ā§āĻ˛āĻžāĻ¸ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻŦā§‡ - āĻ¯āĻĻāĻŋāĻ“ āĻĻā§āĻ°ā§āĻŦāĻ˛, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡ āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§‡āĻļ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤:
āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

āĻ–ā§āĻŦ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻ—ā§āĻ˛āĻŋ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°ā§‡: DB āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡āĻ° āĻ¨āĻžāĻŽ, āĻŽāĻžāĻ¸ā§āĻŸāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¨āĻžāĻŽ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ° āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄā§ˇ āĻ†āĻ¸ā§āĻ¨ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻŸāĻŋāĻ•ā§‡ āĻ•āĻ˛ āĻ•āĻ°āĻŋ: myHabrTest, āĻŽāĻžāĻ¸ā§āĻŸāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€: āĻšāĻžāĻŦāĻ°, āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ: habr12345 āĻāĻŦāĻ‚ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻŦā§‹āĻ¤āĻžāĻŽā§‡ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨:
āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

āĻĒāĻ°ā§‡āĻ° āĻĒā§ƒāĻˇā§āĻ āĻžāĻ¯āĻŧ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻŦāĻžāĻ‡āĻ°ā§‡ āĻĨā§‡āĻ•ā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸āĻ¯ā§‹āĻ—ā§āĻ¯āĻ¤āĻž (āĻĒāĻžāĻŦāĻ˛āĻŋāĻ• āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸āĻŋāĻŦāĻŋāĻ˛āĻŋāĻŸāĻŋ) āĻāĻŦāĻ‚ āĻĒā§‹āĻ°ā§āĻŸāĻ—ā§āĻ˛āĻŋāĻ° āĻ‰āĻĒāĻ˛āĻŦā§āĻ§āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§€ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

āĻ†āĻ¸ā§āĻ¨ VPC āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻ—ā§‹āĻˇā§āĻ ā§€āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§‡āĻŸāĻŋāĻ‚ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ, āĻ¯āĻž āĻĒā§‹āĻ°ā§āĻŸ 5432 (PostgreSQL) āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ā§‡āĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻŦā§‡āĨ¤
VPC āĻĄā§āĻ¯āĻžāĻļāĻŦā§‹āĻ°ā§āĻĄ -> āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻ°āĻŋāĻŸāĻŋ āĻ—ā§āĻ°ā§āĻĒ -> āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻ°āĻŋāĻŸāĻŋ āĻ—ā§āĻ°ā§āĻĒ āĻ¸ā§‡āĻ•āĻļāĻ¨ā§‡ AWS āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻ†āĻ˛āĻžāĻĻāĻž āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ° āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻ¤ā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•:
āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

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

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

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

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

āĻāĻ°āĻĒāĻ°ā§‡, āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻĄā§‡āĻŸāĻžāĻŦā§‡āĻ¸ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ -> āĻĄā§‡āĻŸāĻžāĻŦā§‡āĻ¸ āĻ¨āĻžāĻŽ -> āĻ¨āĻžāĻŽ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨ - habrDB.

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

āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°

āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ•āĻžāĻœā§‡āĻ° āĻŦāĻŋāĻ•āĻžāĻļ āĻšāĻŦā§‡, āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋ āĻĻā§āĻ‡ āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ āĻ•āĻžāĻĢāĻ•āĻž āĻĨā§‡āĻ•ā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻŦā§‡ āĻāĻŦāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻŦā§‡āĨ¤

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

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

streamingContext.checkpoint(checkpointDirectory)

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

from pyspark.streaming import StreamingContext

context = StreamingContext.getOrCreate(checkpointDirectory, functionToCreateContext)

āĻ†āĻŽāĻ°āĻž KafkaUtils āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° createDirectStream āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ "āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨" āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ DirectStream āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ:

from pyspark.streaming.kafka import KafkaUtils
    
sc = SparkContext(conf=conf)
ssc = StreamingContext(sc, 2)

broker_list = 'localhost:9092'
topic = 'transaction'

directKafkaStream = KafkaUtils.createDirectStream(ssc,
                                [topic],
                                {"metadata.broker.list": broker_list})

JSON āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸā§‡ āĻ‡āĻ¨āĻ•āĻžāĻŽāĻŋāĻ‚ āĻĄā§‡āĻŸāĻž āĻĒāĻžāĻ°ā§āĻ¸āĻŋāĻ‚:

rowRdd = rdd.map(lambda w: Row(branch=w['branch'],
                                       currency=w['currency'],
                                       amount=w['amount']))
                                       
testDataFrame = spark.createDataFrame(rowRdd)
testDataFrame.createOrReplaceTempView("treasury_stream")

āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ—ā§āĻ°ā§āĻĒāĻŋāĻ‚ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻŸāĻŋ āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ•āĻ°āĻŋ:

select 
    from_unixtime(unix_timestamp()) as curr_time,
    t.branch                        as branch_name,
    t.currency                      as currency_code,
    sum(amount)                     as batch_value
from treasury_stream t
group by
    t.branch,
    t.currency

āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŦāĻĄāĻŋ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹:

sql_query = get_sql_query()
testResultDataFrame = spark.sql(sql_query)
testResultDataFrame.show(n=5)

āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž AWS RDS-āĻ āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ¸āĻŽāĻˇā§āĻŸāĻŋāĻ—āĻ¤ āĻĄā§‡āĻŸāĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŋāĨ¤ āĻāĻ•āĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤āĻ•āĻ°āĻŖā§‡āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻŽāĻ°āĻž āĻĄā§‡āĻŸāĻžāĻĢā§āĻ°ā§‡āĻŽ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻ˛ā§‡āĻ–āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦ:

testResultDataFrame.write 
    .format("jdbc") 
    .mode("append") 
    .option("driver", 'org.postgresql.Driver') 
    .option("url","jdbc:postgresql://myhabrtest.ciny8bykwxeg.us-east-1.rds.amazonaws.com:5432/habrDB") 
    .option("dbtable", "transaction_flow") 
    .option("user", "habr") 
    .option("password", "habr12345") 
    .save()

AWS RDS-āĻ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻļāĻŦā§āĻĻāĨ¤ āĻ†āĻŽāĻ°āĻž "AWS PostgreSQL āĻ¸ā§āĻĨāĻžāĻĒāĻ¨" āĻ§āĻžāĻĒā§‡ āĻāĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻāĻŦāĻ‚ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ‡āĻ‰āĻ†āĻ°āĻāĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻĄāĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤, āĻ¯āĻž āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧ:

āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻāĻŦāĻ‚ āĻ•āĻžāĻĢāĻ•āĻžāĻ•ā§‡ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ†āĻ°ā§āĻŸāĻŋāĻĢā§āĻ¯āĻžāĻ•ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ smark-submit āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ•āĻžāĻœ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻ‰āĻšāĻŋāĻ¤ spark-streaming-kafka-0-8_2.11. āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ†āĻŽāĻ°āĻž PostgreSQL āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ…ā§āĻ¯āĻžāĻ•ā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ†āĻ°ā§āĻŸāĻŋāĻĢā§āĻ¯āĻžāĻ•ā§āĻŸāĻ“ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦ, āĻ†āĻŽāĻ°āĻž āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ --packages-āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻŦāĨ¤

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

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻāĻŸāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻāĻŦāĻ‚ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ:

spark-submit 
--packages org.apache.spark:spark-streaming-kafka-0-8_2.11:2.0.2,
org.postgresql:postgresql:9.4.1207 
spark_job.py localhost:9092 transaction

āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ•āĻžāĻœ āĻ†āĻ‰āĻŸ! āĻ†āĻĒāĻ¨āĻŋ āĻ¨ā§€āĻšā§‡āĻ° āĻ›āĻŦāĻŋāĻ¤ā§‡ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›ā§‡āĻ¨, āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋ āĻšāĻ˛āĻžāĻ•āĻžāĻ˛ā§€āĻ¨, āĻĒā§āĻ°āĻ¤āĻŋ 2 āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ•āĻžāĻ°āĻŖ āĻ†āĻŽāĻ°āĻž āĻ¯āĻ–āĻ¨ StreamingContext āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ āĻ¤āĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻŦāĻžāĻ¨ā§āĻĄāĻ˛āĻŋāĻ‚ āĻŦā§āĻ¯āĻŦāĻ§āĻžāĻ¨ 2 āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻŋ:

āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

āĻāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻ°ā§‡āĻ•āĻ°ā§āĻĄāĻ—ā§āĻ˛āĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ•āĻ°āĻŋ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨_āĻĒā§āĻ°āĻŦāĻžāĻš:

āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ•āĻžāĻĢāĻ•āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚

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

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡, Apache Kafka āĻāĻŦāĻ‚ PostgreSQL āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ‰āĻ¤ā§āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻŦā§ƒāĻĻā§āĻ§āĻŋāĻ° āĻ¸āĻžāĻĨā§‡, āĻ°āĻŋāĻ¯āĻŧā§‡āĻ˛-āĻŸāĻžāĻ‡āĻŽ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ• āĻŽā§‚āĻ˛ā§āĻ¯āĻ•ā§‡ āĻ…āĻ¤ā§āĻ¯āĻ§āĻŋāĻ• āĻŽā§‚āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻž āĻ•āĻ āĻŋāĻ¨āĨ¤

āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻŽāĻžāĻ° āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ‰ā§ŽāĻ¸ āĻ•ā§‹āĻĄ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ GitHub.

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

āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻžāĻĢāĻ˛ā§āĻ¯ āĻ•āĻžāĻŽāĻ¨āĻž āĻ•āĻ°āĻŋ!

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

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

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