เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เชนเซ‡เชฒเซ‹, เชนเซ‡เชฌเซเชฐ! เช†เชœเซ‡ เช†เชชเชฃเซ‡ เชเชตเซ€ เชธเชฟเชธเซเชŸเชฎ เชฌเชจเชพเชตเซ€เชถเซเช‚ เชœเซ‡ เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Apache Kafka เชฎเซ‡เชธเซ‡เชœ เชธเซเชŸเซเชฐเซ€เชฎ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชถเซ‡ เช…เชจเซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชชเชฐเชฟเชฃเชพเชฎเซ‹เชจเซ‡ AWS RDS เช•เซเชฒเชพเช‰เชก เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชฒเช–เชถเซ‡.

เชšเชพเชฒเซ‹ เช•เชฒเซเชชเชจเชพ เช•เชฐเซ€เช เช•เซ‡ เช•เซ‹เชˆ เชšเซ‹เช•เซเช•เชธ เชงเชฟเชฐเชพเชฃ เชธเช‚เชธเซเชฅเชพ เช…เชฎเชจเซ‡ เชคเซ‡เชจเซ€ เชคเชฎเชพเชฎ เชถเชพเช–เชพเช“เชฎเชพเช‚ "เชซเซเชฒเชพเชฏ เชชเชฐ" เช†เชตเชคเชพ เชตเซเชฏเชตเชนเชพเชฐเซ‹เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชจเซเช‚ เช•เชพเชฐเซเชฏ เชธเซเชฏเซ‹เชœเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เชŸเซเชฐเซ‡เชเชฐเซ€ เชฎเชพเชŸเซ‡ เช–เซเชฒเซเชฒเชพ เชšเชฒเชฃเชจเซ€ เชธเซเชฅเชฟเชคเชฟ, เชตเซเชฏเชตเชนเชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เชฎเชฐเซเชฏเชพเชฆเชพ เช…เชฅเชตเชพ เชจเชพเชฃเชพเช•เซ€เชฏ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชตเช—เซ‡เชฐเซ‡เชจเซ€ เชคเชพเชคเซเช•เชพเชฒเชฟเช• เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพเชจเชพ เชนเซ‡เชคเซเชฅเซ€ เช† เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชœเชพเชฆเซ เช…เชจเซ‡ เชœเชพเชฆเซเชˆ เชœเซ‹เชกเชฃเซ€เชจเชพ เช‰เชชเชฏเซ‹เช— เชตเชฟเชจเชพ เช† เช•เซ‡เชธเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเซ‹ - เช•เชŸ เชนเซ‡เช เชณ เชตเชพเช‚เชšเซ‹! เชœเชพเช“!

เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—
(เช›เชฌเซ€ เชธเซเชคเซเชฐเซ‹เชค)

เชชเชฐเชฟเชšเชฏ

เช…เชฒเชฌเชคเซเชค, เชฐเซ€เช…เชฒ เชŸเชพเช‡เชฎเชฎเชพเช‚ เชฎเซ‹เชŸเซ€ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช†เชงเซเชจเชฟเช• เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซ€ เชคเช•เซ‹ เชชเซ‚เชฐเซ€ เชชเชพเชกเซ‡ เช›เซ‡. เช† เชฎเชพเชŸเซ‡เชจเชพ เชธเซŒเชฅเซ€ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชธเช‚เชฏเซ‹เชœเชจเซ‹เชฎเชพเช‚เชจเซเช‚ เชเช• เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช—เชจเซเช‚ เชŸเซ‡เชจเซเชกเชฎ เช›เซ‡, เชœเซเชฏเชพเช‚ เช•เชพเชซเช•เชพ เช‡เชจเช•เชฎเชฟเช‚เช— เชฎเซ‡เชธเซ‡เชœ เชชเซ‡เช•เซ‡เชŸเซ‹เชจเซ‹ เชธเซเชŸเซเชฐเซ€เชฎ เชฌเชจเชพเชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เช† เชชเซ‡เช•เซ‡เชŸเซ‹เชจเซ‡ เช†เชชเซ‡เชฒ เชธเชฎเชฏ เช…เช‚เชคเชฐเชพเชฒ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡.

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เช–เชพเชฎเซ€ เชธเชนเชฟเชทเซเชฃเซเชคเชพ เชตเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชšเซ‡เช•เชชเซ‹เช‡เชจเซเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚. เช† เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชธเชพเชฅเซ‡, เชœเซเชฏเชพเชฐเซ‡ เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชเชจเซเชœเชฟเชจเชจเซ‡ เช–เซ‹เชตเชพเชฏเซ‡เชฒเซ‹ เชกเซ‡เชŸเชพ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชฎเชพเชคเซเชฐ เช›เซ‡เชฒเซเชฒเชพ เชšเซ‡เช•เชชเซ‹เช‡เชจเซเชŸ เชชเชฐ เชชเชพเช›เชพ เชœเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซเชฏเชพเช‚เชฅเซ€ เช—เชฃเชคเชฐเซ€เช“ เชซเชฐเซ€ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชตเชฟเช•เชธเชฟเชค เชธเชฟเชธเซเชŸเชฎเชจเซเช‚ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ

เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เชตเชชเชฐเชพเชฏเซ‡เชฒ เช˜เชŸเช•เซ‹:

  • เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เชตเชฟเชคเชฐเชฟเชค เชชเชฌเซเชฒเชฟเชถ-เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เช›เซ‡. เช“เชซเชฒเชพเชˆเชจ เช…เชจเซ‡ เช“เชจเชฒเชพเชˆเชจ เชฌเช‚เชจเซ‡ เชธเช‚เชฆเซ‡เชถ เชตเชชเชฐเชพเชถ เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ. เชกเซ‡เชŸเชพ เชจเซเช•เชถเชพเชจ เช…เชŸเช•เชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เช•เชพเชซเช•เชพ เชธเช‚เชฆเซ‡เชถเชพเช“ เชกเชฟเชธเซเช• เชชเชฐ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เช…เช‚เชฆเชฐ เชจเช•เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช•เชพเชซเช•เชพ เชธเชฟเชธเซเชŸเชฎ เชเซ‚เช•เซ€เชชเชฐ เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชพเช‡เชเซ‡เชถเชจ เชธเซ‡เชตเชพเชจเซ€ เชŸเซ‹เชš เชชเชฐ เชฌเชจเซ‡เชฒเซ€ เช›เซ‡;
  • เช…เชชเชพเชšเซ‡ เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— - เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชชเชพเชฐเซเช• เช˜เชŸเช•. เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชฎเซ‹เชกเซเชฏเซเชฒ เชฎเชพเช‡เช•เซเชฐเซ‹-เชฌเซ‡เชš เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชœเซเชฏเชพเช‚ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเซ€เชฎเชจเซ‡ เชจเชพเชจเชพ เชกเซ‡เชŸเชพ เชชเซ‡เช•เซ‡เชŸเซ‹เชจเชพ เชธเชคเชค เช•เซเชฐเชฎ เชคเชฐเซ€เช•เซ‡ เช…เชฐเซเชฅเช˜เชŸเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชตเชฟเชตเชฟเชง เชธเซเชคเซเชฐเซ‹เชคเซ‹เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชจเชพเชจเชพ เชชเซ‡เช•เซ‡เชœเซ‹เชฎเชพเช‚ เชœเซ‹เชกเซ‡ เช›เซ‡. เชจเชตเชพ เชชเซ‡เช•เซ‡เชœเซ‹ เชจเชฟเชฏเชฎเชฟเชค เชธเชฎเชฏเชพเช‚เชคเชฐเซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชฆเชฐเซ‡เช• เชธเชฎเชฏ เช…เช‚เชคเชฐเชพเชฒเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เชเช• เชจเชตเซเช‚ เชชเซ‡เช•เซ‡เชŸ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เช…เช‚เชคเชฐเชพเชฒ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‡เชฒ เช•เซ‹เชˆเชชเชฃ เชกเซ‡เชŸเชพ เชชเซ‡เช•เซ‡เชŸเชฎเชพเช‚ เชธเชฎเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช…เช‚เชคเชฐเชพเชฒเชจเชพ เช…เช‚เชคเซ‡, เชชเซ‡เช•เซ‡เชŸ เชตเซƒเชฆเซเชงเชฟ เช…เชŸเช•เซ‡ เช›เซ‡. เช…เช‚เชคเชฐเชพเชฒเชจเซเช‚ เช•เชฆ เชฌเซ‡เชš เช…เช‚เชคเชฐเชพเชฒ เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เชพเชคเชพ เชชเชฐเชฟเชฎเชพเชฃ เชฆเซเชตเชพเชฐเชพ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡;
  • เช…เชชเชพเชšเซ‡ เชธเซเชชเชพเชฐเซเช• เชเชธเช•เซเชฏเซเชเชฒ - เชธเซเชชเชพเชฐเซเช• เชซเช‚เช•เซเชถเชจเชฒ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เชฐเชฟเชฒเซ‡เชถเชจเชฒ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—เชจเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡. เชธเซเชŸเซเชฐเช•เซเชšเชฐเซเชก เชกเซ‡เชŸเชพ เชเชŸเชฒเซ‡ เช•เซ‡ เชธเซเช•เซ€เชฎเชพ เชงเชฐเชพเชตเชคเซ‹ เชกเซ‡เชŸเชพ, เชเชŸเชฒเซ‡ เช•เซ‡ เชคเชฎเชพเชฎ เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธ เชฎเชพเชŸเซ‡ เชซเซ€เชฒเซเชกเชจเซ‹ เชเช• เชธเซ‡เชŸ. เชธเซเชชเชพเชฐเซเช• เชเชธเช•เซเชฏเซเชเชฒ เชตเชฟเชตเชฟเชง เชฎเชพเชณเช–เชพเช—เชค เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชคเซ‹เชฎเชพเช‚เชฅเซ€ เช‡เชจเชชเซเชŸเชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเซ‡ เช›เซ‡ เช…เชจเซ‡, เชธเซเช•เซ€เชฎเชพ เชฎเชพเชนเชฟเชคเซ€เชจเซ€ เช‰เชชเชฒเชฌเซเชงเชคเชพเชจเซ‡ เช†เชญเชพเชฐเซ€ เช›เซ‡, เชคเซ‡ เชฎเชพเชคเซเชฐ เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธเชจเชพ เชœเชฐเซ‚เชฐเซ€ เช•เซเชทเซ‡เชคเซเชฐเซ‹เชจเซ‡ เช…เชธเชฐเช•เชพเชฐเช• เชฐเซ€เชคเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เชกเซ‡เชŸเชพเชซเซเชฐเซ‡เชฎ API เชชเชฃ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡;
  • 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

เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เชšเชพเชฒเซ‹ เชจเชตเชพ เชฌเชจเชพเชตเซ‡เชฒเชพ เชตเชฟเชทเชฏ เชฎเชพเชŸเซ‡ เชจเชฟเชฐเซเชฎเชพเชคเชพ เช…เชจเซ‡ เช‰เชชเชญเซ‹เช•เซเชคเชพเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฃเซ‹ เชšเซ‚เช•เซ€ เชœเชˆเช. เชคเชฎเซ‡ เชธเช‚เชฆเซ‡เชถเชพ เชฎเซ‹เช•เชฒเชตเชพ เช…เชจเซ‡ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชฟเช—เชคเซ‹ เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹เชฎเชพเช‚ เชฒเช–เซ‡เชฒเซ€ เช›เซ‡ - เช•เซ‡เชŸเชฒเชพเช• เชธเช‚เชฆเซ‡เชถเชพเช“ เชฎเซ‹เช•เชฒเซ‹. เชธเชพเชฐเซเช‚, เช…เชฎเซ‡ เช•เชพเชซเช•เชพเชชเซเชฐเซ‹เชกเซเชฏเซเชธเชฐ 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()

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชšเชฒเชพเชตเชคเซ€ เชตเช–เชคเซ‡, เช…เชฎเชจเซ‡ เชŸเชฐเซเชฎเชฟเชจเชฒเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเชพ เชธเช‚เชฆเซ‡เชถเชพเช“ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡:

เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชฌเชงเซเช‚ เช…เชฎเซ‡ เช‡เชšเซเช›เซ€เช เช›เซ€เช เชคเซ‡ เชชเซเชฐเชฎเชพเชฃเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ - เชจเชฟเชฐเซเชฎเชพเชคเชพ เช…เชฎเชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เชตเชฟเชทเชฏ เชชเชฐ เชธเช‚เชฆเซ‡เชถเชพ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡.
เช†เช—เชณเชจเซเช‚ เชชเช—เชฒเซเช‚ เชธเซเชชเชพเชฐเซเช• เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡ เช…เชจเซ‡ เช† เชธเช‚เชฆเซ‡เชถ เชธเซเชŸเซเชฐเซ€เชฎ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡.

เช…เชชเชพเชšเซ‡ เชธเซเชชเชพเชฐเซเช• เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช…เชชเชพเชšเซ‡ เชธเซเชชเชพเชฐเซเช• เชเช• เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช• เช…เชจเซ‡ เช‰เชšเซเชš-เชชเซเชฐเชฆเชฐเซเชถเชจ เช•เซเชฒเชธเซเชŸเชฐ เช•เชฎเซเชชเซเชฏเซเชŸเชฟเช‚เช— เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช›เซ‡.

เชธเซเชชเชพเชฐเซเช• เชฎเซ‡เชชเชฐเซ‡เชกเซเชฏเซเชธ เชฎเซ‹เชกเชฒเชจเชพ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เช…เชฎเชฒเซ€เช•เชฐเชฃเซ‹ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชธเชพเชฐเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เช•เชฐเซ‡ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เช•เซเชตเซ‡เชฐเซ€เช เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชธเชนเชฟเชค เช—เชฃเชคเชฐเซ€เชจเชพ เชชเซเชฐเช•เชพเชฐเซ‹เชจเซ€ เชตเชฟเชถเชพเชณ เชถเซเชฐเซ‡เชฃเซ€เชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเซ‡ เช›เซ‡. เชฎเซ‹เชŸเซ€ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชเชกเชช เชฎเชนเชคเซเชตเชจเซ€ เชญเซ‚เชฎเชฟเช•เชพ เชญเชœเชตเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชเชกเชช เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เชฎเชฟเชจเชฟเชŸเซ‹ เช…เชฅเชตเชพ เช•เชฒเชพเช•เซ‹ เชฐเชพเชน เชœเซ‹เชฏเชพ เชตเชฟเชจเชพ เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชธเซเชชเชพเชฐเซเช•เชจเซ€ เชธเซŒเชฅเซ€ เชฎเซ‹เชŸเซ€ เชถเช•เซเชคเชฟเช“เชฎเชพเช‚เชฅเซ€ เชเช• เชœเซ‡ เชคเซ‡เชจเซ‡ เช†เชŸเชฒเซ€ เชเชกเชชเซ€ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เชคเซ‡ เชคเซ‡เชจเซ€ เช‡เชจ-เชฎเซ‡เชฎเชฐเซ€ เช—เชฃเชคเชฐเซ€เช“ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช›เซ‡.

เช† เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• Scala เชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชชเชนเซ‡เชฒเชพ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

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 เช•เซเชฒเชพเชธเชจเซ‹ เชฆเชพเช–เชฒเซ‹ เช“เชซเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ - เชœเซ‹ เช•เซ‡ เชจเชฌเชณเชพ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชคเซ‡ เชฎเชซเชค เช›เซ‡ เช…เชจเซ‡ เช…เชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏ เชฎเชพเชŸเซ‡ เชเช•เชฆเชฎ เชฏเซ‹เช—เซเชฏ เช›เซ‡:
เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เช†เช—เชณ เช–เซ‚เชฌ เชœ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชฌเชพเชฌเชคเซ‹ เช†เชตเซ‡ เช›เซ‡: เชกเซ‡เชŸเชพเชฌเซ‡เช เช‰เชฆเชพเชนเชฐเชฃเชจเซเช‚ เชจเชพเชฎ, เชฎเซเช–เซเชฏ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซเช‚ เชจเชพเชฎ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เชชเชพเชธเชตเชฐเซเชก. เชšเชพเชฒเซ‹ เชฆเชพเช–เชฒเชพเชจเซ‡ เชจเชพเชฎ เช†เชชเซ€เช: myHabrTest, เชฎเซเช–เซเชฏ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ: habr, เชชเชพเชธเชตเชฐเซเชก: habr12345 เช…เชจเซ‡ เชจเซ‡เช•เซเชธเซเชŸ เชฌเชŸเชจ เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเซ‹:
เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เช†เช—เชฒเชพ เชชเซƒเชทเซเช  เชชเชฐ เชฌเชนเชพเชฐเชฅเซ€ เช…เชฎเชพเชฐเชพ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชฐเซเชตเชฐเชจเซ€ เชธเซเชฒเชญเชคเชพ (เชœเชพเชนเซ‡เชฐ เชธเซเชฒเชญเชคเชพ) เช…เชจเซ‡ เชชเซ‹เชฐเซเชŸเชจเซ€ เช‰เชชเชฒเชฌเซเชงเชคเชพ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เช›เซ‡:

เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เชšเชพเชฒเซ‹ VPC เชธเซเชฐเช•เซเชทเชพ เชœเซ‚เชฅ เชฎเชพเชŸเซ‡ เชเช• เชจเชตเซ€ เชธเซ‡เชŸเชฟเช‚เช— เชฌเชจเชพเชตเซ€เช, เชœเซ‡ เชชเซ‹เชฐเซเชŸ 5432 (PostgreSQL) เชฆเซเชตเชพเชฐเชพ เช…เชฎเชพเชฐเชพ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชฐเซเชตเชฐเชจเซ€ เชฌเชพเชนเซเชฏ เชเช•เซเชธเซ‡เชธเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡.
เชšเชพเชฒเซ‹ เช…เชฒเช— เชฌเซเชฐเชพเช‰เชเชฐ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ AWS เช•เชจเซเชธเซ‹เชฒ เชชเชฐ VPC เชกเซ‡เชถเชฌเซ‹เชฐเซเชก -> เชธเซเชฐเช•เซเชทเชพ เชœเซ‚เชฅเซ‹ -> เชธเซเชฐเช•เซเชทเชพ เชœเซ‚เชฅ เชตเชฟเชญเชพเช— เชฌเชจเชพเชตเซ‹:
เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เช…เชฎเซ‡ เชธเซเชฐเช•เซเชทเชพ เชœเซ‚เชฅ เชฎเชพเชŸเซ‡ เชจเชพเชฎ เชธเซ‡เชŸ เช•เชฐเซเชฏเซเช‚ เช›เซ‡ - PostgreSQL, เชเช• เชตเชฐเซเชฃเชจ, เชœเซ‡ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช† เชœเซ‚เชฅ เช•เชฏเชพ VPC เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช เช…เชจเซ‡ เชฌเชจเชพเชตเซ‹ เชฌเชŸเชจเชจเซ‡ เช•เซเชฒเชฟเช• เช•เชฐเซ‹:
เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เชจเซ€เชšเซ‡เชจเชพ เชšเชฟเชคเซเชฐเชฎเชพเช‚ เชฌเชคเชพเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ‡ เชจเชตเชพ เชฌเชจเชพเชตเซ‡เชฒเชพ เชœเซ‚เชฅ เชฎเชพเชŸเซ‡ เชชเซ‹เชฐเซเชŸ 5432 เชฎเชพเชŸเซ‡เชจเชพ เช‡เชจเชฌเชพเช‰เชจเซเชก เชจเชฟเชฏเชฎเซ‹ เชญเชฐเซ‹. เชคเชฎเซ‡ เชชเซ‹เชฐเซเชŸเชจเซ‡ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชธเซเชชเชทเซเชŸ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชชเซเชฐเช•เชพเชฐ เชกเซเชฐเซ‹เชช-เชกเชพเช‰เชจ เชธเซ‚เชšเชฟเชฎเชพเช‚เชฅเซ€ PostgreSQL เชชเชธเช‚เชฆ เช•เชฐเซ‹.

เช•เชกเช• เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ เช•เชนเซ€เช เชคเซ‹, เชฎเซ‚เชฒเซเชฏ ::/0 เชจเซ‹ เช…เชฐเซเชฅ เชธเชฎเช—เซเชฐ เชตเชฟเชถเซเชตเชฎเชพเช‚เชฅเซ€ เชธเชฐเซเชตเชฐ เชชเชฐ เช†เชตเชคเชพ เชŸเซเชฐเชพเชซเชฟเช•เชจเซ€ เช‰เชชเชฒเชฌเซเชงเชคเชพ เช›เซ‡, เชœเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชฐเซ€เชคเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เชธเชพเชšเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช‰เชฆเชพเชนเชฐเชฃเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เช†เชชเชฃเซ‡ เช† เช…เชญเชฟเช—เชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ€เช:
เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เช…เชฎเซ‡ เชฌเซเชฐเชพเช‰เชเชฐ เชชเซƒเชทเซเช  เชชเชฐ เชชเชพเช›เชพ เชซเชฐเซ€เช เช›เซ€เช, เชœเซเชฏเชพเช‚ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ "เช…เชฆเซเชฏเชคเชจ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เช—เซ‹เช เชตเซ‹" เช–เซเชฒเซเชฒเซเช‚ เช›เซ‡ เช…เชจเซ‡ VPC เชธเซเชฐเช•เซเชทเชพ เชœเซ‚เชฅเซ‹ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชชเชธเช‚เชฆ เช•เชฐเซ‹ -> เชนเชพเชฒเชจเชพ VPC เชธเซเชฐเช•เซเชทเชพ เชœเซ‚เชฅเซ‹ เชชเชธเช‚เชฆ เช•เชฐเซ‹ -> PostgreSQL:
เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เช†เช—เชณ, เชกเซ‡เชŸเชพเชฌเซ‡เช เชตเชฟเช•เชฒเซเชชเซ‹เชฎเชพเช‚ -> เชกเซ‡เชŸเชพเชฌเซ‡เช เชจเชพเชฎ -> เชจเชพเชฎ เชธเซ‡เชŸ เช•เชฐเซ‹ - habrDB.

เช…เชฎเซ‡ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡, เชฌเซ‡เช•เช…เชช (เชฌเซ‡เช•เช…เชช เชฐเซ€เชŸเซ‡เชจเซเชถเชจ เชชเซ€เชฐเชฟเชฏเชก - 0 เชฆเชฟเชตเชธ), เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เช…เชจเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจ เช†เช‚เชคเชฐเชฆเซƒเชทเซเชŸเชฟเชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเชตเชพเชจเชพ เช…เชชเชตเชพเชฆ เชธเชฟเชตเชพเชฏ เชฌเชพเช•เซ€เชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เช›เซ‹เชกเซ€ เชถเช•เซ€เช เช›เซ€เช. เชฌเชŸเชจ เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเซ‹ เชกเซ‡เชŸเชพเชฌเซ‡เช เชฌเชจเชพเชตเซ‹:
เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เชฅเซเชฐเซ‡เชก เชนเซ‡เชจเซเชกเชฒเชฐ

เช…เช‚เชคเชฟเชฎ เชคเชฌเช•เซเช•เซ‹ เชธเซเชชเชพเชฐเซเช• เชœเซ‹เชฌเชจเซ‹ เชตเชฟเช•เชพเชธ เชนเชถเซ‡, เชœเซ‡ เชฆเชฐ เชฌเซ‡ เชธเซ‡เช•เชจเซเชกเซ‡ เช•เชพเชซเช•เชพ เชคเชฐเชซเชฅเซ€ เช†เชตเชคเชพ เชจเชตเชพ เชกเซ‡เชŸเชพ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชถเซ‡ เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชฆเชพเช–เชฒ เช•เชฐเชถเซ‡.

เช‰เชชเชฐ เชจเซ‹เช‚เชงเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡เชฎ, เชšเซ‡เช•เชชเซ‹เช‡เชจเซเชŸเซเชธ เชธเซเชชเชพเชฐเซเช•เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช—เชฎเชพเช‚ เชเช• เชฎเซเช–เซเชฏ เชชเชฆเซเชงเชคเชฟ เช›เซ‡ เชœเซ‡ เชฆเซ‹เชท เชธเชนเชฟเชทเซเชฃเซเชคเชพเชจเซ‡ เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช—เซ‹เช เชตเซ‡เชฒ เชนเซ‹เชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡. เช…เชฎเซ‡ เชšเซ‡เช•เชชเซ‹เช‡เชจเซเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚ เช…เชจเซ‡, เชœเซ‹ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชจเชฟเชทเซเชซเชณ เชœเชพเชฏ, เชคเซ‹ เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชฎเซ‹เชกเซเชฏเซเชฒเชจเซ‡ เชซเช•เซเชค เช›เซ‡เชฒเซเชฒเชพ เชšเซ‡เช•เชชเซ‹เช‡เชจเซเชŸ เชชเชฐ เชชเชพเช›เชพ เชซเชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เช–เซ‹เชตเชพเชฏเซ‡เชฒ เชกเซ‡เชŸเชพเชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เช—เชฃเชคเชฐเซ€เช“ เชซเชฐเซ€ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เชšเซ‡เช•เชชเซ‰เช‡เชจเซเชŸเชฟเช‚เช—เชจเซ‡ เช–เชพเชฎเซ€-เชธเชนเชฟเชทเซเชฃเซ, เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ (เชœเซ‡เชฎ เช•เซ‡ HDFS, S3, เชตเช—เซ‡เชฐเซ‡) เชชเชฐ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชธเซ‡เชŸ เช•เชฐเซ€เชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชšเซ‡เช•เชชเซ‹เช‡เชจเซเชŸ เชฎเชพเชนเชฟเชคเซ€ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช†เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡:

streamingContext.checkpoint(checkpointDirectory)

เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, เช…เชฎเซ‡ เชจเซ€เชšเซ‡เชจเชพ เช…เชญเชฟเช—เชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚, เชเชŸเชฒเซ‡ เช•เซ‡, เชœเซ‹ checkpointDirectory เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชธเช‚เชฆเชฐเซเชญ เชšเซ‡เช•เชชเซ‹เช‡เชจเซเชŸ เชกเซ‡เชŸเชพเชฎเชพเช‚เชฅเซ€ เชซเชฐเซ€เชฅเซ€ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชœเซ‹ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชจ เชนเซ‹เชฏ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡ เชชเซเชฐเชฅเชฎ เชตเช–เชค เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเซ‹เชฏ), เชคเซ‹ เชซเช‚เช•เซเชถเชจToCreateContext เชจเซ‡ เชจเชตเซ‹ เชธเช‚เชฆเชฐเซเชญ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ DStreams เชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

from pyspark.streaming import StreamingContext

context = StreamingContext.getOrCreate(checkpointDirectory, functionToCreateContext)

เช…เชฎเซ‡ KafkaUtils เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ€ createDirectStream เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ "เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ" เชตเชฟเชทเชฏ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชตเชพ เชฎเชพเชŸเซ‡ เชกเชพเชฏเชฐเซ‡เช•เซเชŸเชธเซเชŸเซเชฐเซ€เชฎ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชฌเชจเชพเชตเซ€เช เช›เซ€เช:

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 เชœเชฎเชพเชตเชตเซเช‚" เชธเซเชŸเซ‡เชช เชชเชฐ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช…เชจเซ‡ เชชเชพเชธเชตเชฐเซเชก เชฌเชจเชพเชตเซเชฏเซ‹ เช›เซ‡. เชคเชฎเชพเชฐเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชฐเซเชตเชฐ url เชคเชฐเซ€เช•เซ‡ เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช, เชœเซ‡ เช•เชจเซ‡เช•เซเชŸเชฟเชตเชฟเชŸเซ€ เช…เชจเซ‡ เชธเซเชฐเช•เซเชทเชพ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชพเชฏ เช›เซ‡:

เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เชธเซเชชเชพเชฐเซเช• เช…เชจเซ‡ เช•เชพเชซเช•เชพเชจเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชœเซ‹เชกเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ smark-เชธเชฌเชฎเชฟเชŸ เชฆเซเชตเชพเชฐเชพ เชœเซ‹เชฌ เชšเชฒเชพเชตเชตเซ€ เชœเซ‹เชˆเช. เชธเซเชชเชพเชฐเซเช•-เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช—-เช•เชพเชซเซเช•เชพ-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 เชธเซ‡เช•เชจเซเชก เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช:

เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เช†เช—เชณ, เช…เชฎเซ‡ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชกเชจเซ€ เชนเชพเชœเชฐเซ€ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชเช• เชธเชฐเชณ เช•เซเชตเซ‡เชฐเซ€ เช•เชฐเซ€เช เช›เซ€เช เชตเซเชฏเชตเชนเชพเชฐ_เชชเซเชฐเชตเชพเชน:

เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชธเชพเชฅเซ‡ เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—

เชจเชฟเชทเซเช•เชฐเซเชท

เช† เชฒเซ‡เช– เช…เชชเชพเชšเซ‡ เช•เชพเชซเช•เชพ เช…เชจเซ‡ เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชเชธเช•เซเชฏเซเชเชฒ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฃเชฎเชพเช‚ เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเชพเชนเชฟเชคเซ€เชจเชพ เชธเซเชŸเซเชฐเซ€เชฎ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—เชจเชพ เช‰เชฆเชพเชนเชฐเชฃ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ‡ เช›เซ‡. เชตเชฟเชตเชฟเชง เชธเซเชคเซเชฐเซ‹เชคเซ‹เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพเชจเซ€ เชตเซƒเชฆเซเชงเชฟ เชธเชพเชฅเซ‡, เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช— เช…เชจเซ‡ เชฐเซ€เช…เชฒ-เชŸเชพเช‡เชฎ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชชเชพเชฐเซเช• เชธเซเชŸเซเชฐเซ€เชฎเชฟเช‚เช—เชจเชพ เชตเซเชฏเชตเชนเชพเชฐเชฟเช• เชฎเซ‚เชฒเซเชฏเชจเซ‡ เชตเชงเซ เชชเชกเชคเซ‹ เช…เช‚เชฆเชพเชœ เช•เชพเชขเชตเซ‹ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡.

เชคเชฎเซ‡ เชฎเชพเชฐเชพ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซเชคเซเชฐเซ‹เชค เช•เซ‹เชก เช…เชนเซ€เช‚เชฅเซ€ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹ GitHub.

เชนเซเช‚ เช† เชฒเซ‡เช–เชจเซ€ เชšเชฐเซเชšเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช–เซเชถ เช›เซเช‚, เชนเซเช‚ เชคเชฎเชพเชฐเซ€ เชŸเชฟเชชเซเชชเชฃเซ€เช“เชจเซ€ เชฐเชพเชน เชœเซ‹เช‰เช‚ เช›เซเช‚, เช…เชจเซ‡ เชนเซเช‚ เชฌเชงเชพ เช•เชพเชณเชœเซ€ เชฐเชพเช–เชจเชพเชฐเชพ เชตเชพเชšเช•เซ‹ เชคเชฐเชซเชฅเซ€ เชฐเชšเชจเชพเชคเซเชฎเช• เชŸเซ€เช•เชพเชจเซ€ เชชเชฃ เช†เชถเชพ เชฐเชพเช–เซเช‚ เช›เซเช‚.

เชนเซเช‚ เชคเชฎเชจเซ‡ เชธเชซเชณเชคเชพเชจเซ€ เช‡เชšเซเช›เชพ เช•เชฐเซเช‚ เช›เซเช‚!

เช—เซ€เชค. เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชธเซเชฅเชพเชจเชฟเช• PostgreSQL เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เช†เชฏเซ‹เชœเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เชชเชฐเช‚เชคเซ AWS เชชเซเชฐเชคเซเชฏเซ‡เชจเชพ เชฎเชพเชฐเชพ เชชเซเชฐเซ‡เชฎเชจเซ‡ เชœเซ‹เชคเชพเช‚, เชฎเซ‡เช‚ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เช•เซเชฒเชพเช‰เชก เชชเชฐ เช–เชธเซ‡เชกเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เช† เชตเชฟเชทเชฏ เชชเชฐเชจเชพ เช†เช—เชฒเชพ เชฒเซ‡เช–เชฎเชพเช‚, เชนเซเช‚ AWS เชฎเชพเช‚ เช‰เชชเชฐ เชตเชฐเซเชฃเชตเซ‡เชฒ เชธเชฎเช—เซเชฐ เชธเชฟเชธเซเชŸเชฎเชจเซ‡ AWS Kinesis เช…เชจเซ‡ AWS EMR เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเซ€ เชคเซ‡ เชฌเชคเชพเชตเซ€เชถ. เชธเชฎเชพเชšเชพเชฐ เช…เชจเซเชธเชฐเซ‹!

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹