เบชเบฐเบเบฒเบเบเบต, Habr! เบกเบทเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบชเปเบฒเบเบฅเบฐเบเบปเบเบเบตเปเบเบฐเบเบฐเบกเบงเบเบเบปเบเบเบฒเบเบเปเบฒเบเบเบญเบเบเปเปเบเบงเบฒเบก Apache Kafka เปเบเบเปเบเป Spark Streaming เปเบฅเบฐเบเบฝเบเบเบปเบเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเปเบชเปเบเบฒเบเบเปเปเบกเบนเบ AWS RDS cloud.
เบเปเปเบซเปเบเบดเบเบเบฐเบเบฒเบเบฒเบเบงเปเบฒเบชเบฐเบเบฒเบเบฑเบเบชเบดเบเปเบเบทเปเบญเบชเบฐเปเบเบฒเบฐเปเบเบซเบเบถเปเบเบเปเบฒเบเบปเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฑเบเบซเบเปเบฒเบเบธเบฅเบฐเบเปเบฒเบเบตเปเปเบเบปเปเบฒเบกเบฒ "เปเบเบเบฑเบเบเบต" เปเบเบเบปเปเบงเบชเบฒเบเบฒเบเบญเบเบกเบฑเบ. เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบทเปเบญเบเบธเบเบเบฐเบชเบปเบเบเบญเบเบเบฒเบเบเบดเบเปเบฅเปเบเบฑเบเบเบตเบเบฑเบเปเบเบเปเบฒเปเบซเบเปเบเปเบเบดเบเบเบฒเปเบเบตเบเบชเปเบฒเบฅเบฑเบเบเบฑเบเปเบเบดเบ, เบเบญเบเปเบเบเบเปเบฒเบเบฑเบเบซเบผเบทเบเบปเบเปเบเปเบฎเบฑเบเบเบฒเบเบเปเบฒเบเบเบฒเบเปเบเบดเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒ, เปเบฅเบฐเบญเบทเปเบเป.
เบงเบดเบเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเปเบฅเบฐเบเบตเบเบตเปเปเบเบเบเปเปเบกเบตเบเบฒเบเปเบเป magic เปเบฅเบฐ magic เบเบฒเบเบชเบฐเบเบปเบเบเปเบฒ - เบญเปเบฒเบเบเบฒเบเปเบเปเบเบฒเบเบเบฑเบ! เปเบ!
เบเบฒเบเบเปเบฒเบชเบฐเปเบซเบเบต
เปเบเปเบเบญเบ, เบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบเบเปเบฒเบเบงเบเบซเบผเบงเบเบซเบผเบฒเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบเปเบเบดเบเปเบซเปเปเบญเบเบฒเบเบญเบฑเบเบเบฝเบเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเปเบเบฅเบฐเบเบปเบเบเบตเปเบเบฑเบเบชเบฐเปเบซเบก. เบซเบเบถเปเบเปเบเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบตเปเบเบดเบเบปเบกเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเปเปเบกเปเบ tandem เบเบญเบ Apache Kafka เปเบฅเบฐ Spark Streaming, เบเบตเป Kafka เบชเปเบฒเบเบเบฐเปเบชเบเบญเบเบเบญเบเบเปเปเบเบงเบฒเบกเบเบตเปเปเบเบปเปเบฒเบกเบฒ, เปเบฅเบฐ Spark Streaming เบเบฐเบกเบงเบเบเบปเบเบเบญเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบเบเปเบงเบเปเบงเบฅเบฒเปเบเบซเบเบถเปเบ.
เปเบเบทเปเบญเปเบเบตเปเบกเบเบงเบฒเบกเบเบปเบเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเปเบเบธเบเบเบงเบเบเบฒ. เบเปเบงเบเบเบปเบเปเบเบเบตเป, เปเบกเบทเปเบญเปเบเบทเปเบญเบเบเบฑเบ Spark Streaming เบเปเบญเบเบเบฒเบเบเบนเปเบเบทเบเบเปเปเบกเบนเบเบเบตเปเบชเบนเบเบซเบฒเบ, เบกเบฑเบเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเบเบฑเบเบเบทเบเปเบเบซเบฒเบเบธเบเบเบงเบเบเบฒเบชเบธเบเบเปเบฒเบเปเบฅเบฐเบชเบทเบเบเปเปเบเบฒเบเบเบดเบเปเบฅเปเบเบฒเบเบเปเบญเบเบเบฑเปเบ.
เบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบญเบเบฅเบฐเบเบปเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒ
เบญเบปเบโเบเบฐโเบเบญเบโเบเบตเปโเบเปเบฒโเปเบเปโ:
Apache Kafka เปเบกเปเบเบฅเบฐเบเบปเบเบเบฒเบเบชเบปเปเบเบเปเปเบเบงเบฒเบกเบเบตเปเปเบเบตเบเปเบเป-เบชเบฐเปเบฑเบเบชเบฐเบกเบฒเบเบดเบ. เปเบซเบกเบฒเบฐเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฅเบดเปเบเบเบเปเปเบเบงเบฒเบกเบญเบญเบเปเบฅเบเปเปเบฅเบฐเบญเบญเบเปเบฅเบเป. เปเบเบทเปเบญเบเปเบญเบเบเบฑเบเบเบฒเบเบชเบนเบเปเบชเบเบเปเปเบกเบนเบ, เบเปเปเบเบงเบฒเบก Kafka เบเบทเบเปเบเบฑเบเปเบงเปเปเบเปเบเปเบเปเบฅเบฐ replicated เบเบฒเบเปเบ cluster. เบฅเบฐเบเบปเบ Kafka เบเบทเบเบชเปเบฒเบเบเบถเปเบเบขเบนเปเปเบเบดเบเบชเบธเบเบเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ synchronization ZooKeeper;Apache Spark Streaming - เบญเบปเบเบเบฐเบเบญเบ Spark เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบ streaming. เปเบกเบเบนเบ Spark Streaming เบเบทเบเบชเปเบฒเบเบเบถเปเบเปเบเบเปเบเปเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบธเบเบฅเบฐเบเบฒเบ, เบเปเบญเบเบเบตเปเบเบฒเบเบเปเบฒเบเบเบญเบเบเปเปเบกเบนเบเบเบทเบเบเบตเบเบงเบฒเบกเบงเปเบฒเปเบเบฑเบเบฅเปเบฒเบเบฑเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเบเบญเบเบเบธเบเบเปเปเบกเบนเบเบเบฐเบซเบเบฒเบเบเปเบญเบ. Spark Streaming เปเบญเบปเบฒเบเปเปเบกเบนเบเบเบฒเบเปเบซเบผเปเบเบเปเบฒเบเป เปเบฅเบฐเบฅเบงเบกเบกเบฑเบเปเบเบปเปเบฒเปเบเปเบเบเบธเบเบเปเบญเบเป. เปเบเบฑเบเปเบเบเปเบซเบกเปเบเบทเบเบชเปเบฒเบเบเบทเปเบเปเบเบเปเบงเบเปเบงเบฅเบฒเบเบปเบเบเบฐเบเบด. เปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเปเบเปเบฅเบฐเบเปเบงเบเปเบงเบฅเบฒ, เปเบเบฑเบเปเบเบฑเบเปเปเปเบเบทเบเบชเปเบฒเบเบเบทเปเบ, เปเบฅเบฐเบเปเปเบกเบนเบเบเบตเปเปเบเปเบฎเบฑเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฑเปเบเปเบกเปเบเบฅเบงเบกเบขเบนเปเปเบเปเบเบฑเบเปเบเบฑเบ. เปเบเบเบญเบเบเปเบฒเบเบเบญเบเปเบฅเบเบฐเบซเปเบฒเบ, เบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเบเบญเบเปเบเบฑเบเปเบเบฑเบเบขเบธเบ. เบเบฐเบซเบเบฒเบเบเบญเบเปเบฅเบเบฐเบซเปเบฒเบเปเบกเปเบเบเบทเบเบเปเบฒเบเบปเบเปเบเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบตเปเปเบญเบตเปเบเบงเปเบฒ batch interval;Apache Spark SQL - เบเบฐโเบชเบปเบกโเบเบฐโเบชเบฒเบโเบเบฒเบโเบเบฐโเบกเบงเบโเบเบปเบโเบเบตเปโเบเปเบฝเบงโเบเปเบญเบโเบเบฑเบ Spark เบเบฒเบโเบเปเบฒโเปเบเบตเบโเปเบเบโเบเบฒเบโเบเบตเปโเปเบเบฑเบโเบเบฐโเปเบซเบเบโ. เบเปเปเบกเบนเบเบเบตเปเบกเบตเปเบเบเบชเปเบฒเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเปเบกเบนเบเบเบตเปเบกเบต schema, เบเบฑเปเบเปเบกเปเบ, เบเบธเบเบเบฝเบงเบเบญเบเบเบฒเบเบชเบฐเบซเบเบฒเบกเบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบถเบเบเบฑเบเบซเบกเบปเบ. Spark SQL เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเบเบฒเบเบซเบผเบฒเบเปเปเบซเบผเปเบเบเปเปเบกเบนเบเบเบตเปเบกเบตเปเบเบเบชเปเบฒเบเปเบฅเบฐ, เบเปเบญเบเบเบฒเบเบกเบตเบเปเปเบกเบนเบเบเบญเบ schema, เบกเบฑเบเบชเบฒเบกเบฒเบเบเบถเบเบเปเปเบกเบนเบเบเบฝเบเปเบเปเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเบขเปเบฒเบเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบ, เปเบฅเบฐเบเบฑเบเบชเบฐเบซเบเบญเบ DataFrame APIs;AWS RDS เปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบเบตเปเบญเบตเบเปเบชเปเบเบฅเบฒเบงเบเบตเปเบกเบตเบฅเบฒเบเบฒเบเปเปเปเบเบ, เบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบงเบฑเบเบเบตเปเบเปเบฒเบเปเบเบเบฒเบเบเบดเบเบเบฑเปเบ, เบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบฅเบฐเบเบฒเบเบเบฑเบเบเบฐเบซเบเบฒเบ, เปเบฅเบฐเบเบทเบเบเบธเปเบกเบเบญเบเปเบเบเบเบปเบเปเบเบ Amazon.
เบเบฒเบเบเบดเบเบเบฑเปเบเปเบฅเบฐเปเบฅเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Kafka
เบเปเบญเบเบเบตเปเบเบฐเปเบเป Kafka เปเบเบเบเบปเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบซเปเปเบเปเปเบเบงเปเบฒเบเปเบฒเบเบกเบต Java, เปเบเบฒเบฐเบงเปเบฒ ... JVM เบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ:
sudo apt-get update
sudo apt-get install default-jre
java -version
เบกเบฒเบชเปเบฒเบเบเบนเปเปเบเปเปเปเปเปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ Kafka:
sudo useradd kafka -m
sudo passwd kafka
sudo adduser kafka sudo
เบเปเปเปเบ, เบเบฒเบงเปเบซเบฅเบเบเบฒเบเปเบเบเบขเบฒเบเบเบฒเบเปเบงเบฑเบเปเบเบเปเบเบฒเบเบเบฒเบ Apache Kafka:
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
เบเบฑเปเบเบเบญเบเบเปเปเปเบเปเบกเปเบเบเบฒเบเปเบฅเบทเบญเบ. เบเบงเบฒเบกเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเปเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเปเบเปเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเบฑเบเบซเบกเบปเบเบเบญเบ Apache Kafka. เบเบปเบงเบขเปเบฒเบ, เบฅเบถเบเบซเบปเบงเบเปเป, เปเบงเบเปเบนเป, เบเบธเปเบกเบเบตเปเบเปเปเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบตเบเปเบเปเปเบเป. เปเบเบทเปเบญเบเปเบฝเบเบญเบฑเบเบเบตเป, เปเบซเปเปเบฎเบปเบฒเปเบเปเปเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒ:
vim ~/kafka/config/server.properties
เปเบเบตเปเบกเบชเบดเปเบเบเปเปเปเบเบเบตเปเปเบชเปเบเปเบฒเบเปเบเบฅเป:
delete.topic.enable = true
เบเปเบญเบเบเบตเปเบเบฐเปเบฅเบตเปเบกเปเบเบตเบเปเบงเบต Kafka, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบฅเบตเปเบกเปเบเบตเบเปเบงเบต ZooKeeper; เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบชเบฐเบเบดเบเปเบชเบตเบกเบเบตเปเบกเบฒเบเปเบญเบกเบเบฑเบเบเบฒเบเปเบเบเบขเบฒเบ Kafka:
Cd ~/kafka
bin/zookeeper-server-start.sh config/zookeeper.properties
เบซเบผเบฑเบเบเบฒเบ ZooKeeper เปเบเปเปเบฅเบตเปเบกเบเบปเปเบเบขเปเบฒเบเบชเปเบฒเปเบฅเบฑเบเบเบปเบ, เปเบเบตเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Kafka เปเบ terminal เปเบเบเบเปเบฒเบเบซเบฒเบ:
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
เปเบซเปเบเบฒเบเปเบญเบเบฒเบเบเบญเบเบเบฒเบเบเบปเบเบชเบญเบเบเบนเปเบเบฐเบฅเบดเบเปเบฅเบฐเบเบนเปเบเปเบฅเบดเปเบเบเบชเปเบฒเบฅเบฑเบเบซเบปเบงเบเปเปเบเบตเปเบชเปเบฒเบเปเบซเบกเป. เบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเบชเบปเปเบเปเบฅเบฐเบฎเบฑเบเบเปเปเบเบงเบฒเบกเบเบทเบเบเบฝเบเปเบงเปเปเบเปเบญเบเบฐเบชเบฒเบเบเบฒเบเบเบฒเบ -
เบเบนเปเบเบฐเบฅเบดเบเบเบฝเบ
เบเบนเปเบเบฐเบฅเบดเบเบเบฐเบชเปเบฒเบเบเปเปเบกเบนเบเปเบเบเบชเบธเปเบก - 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()
เปเบกเบทเปเบญเปเบฅเปเบเบชเบฐเบเบฃเบดเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเปเปเบเบงเบฒเบกเบเปเปเปเบเบเบตเปเบขเบนเปเปเบ terminal:
เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฒเบกเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ - เบเบนเปเบเบฐเบฅเบดเบเบชเปเบฒเบเปเบฅเบฐเบชเบปเปเบเบเปเปเบเบงเบฒเบกเปเบเบซเบฒเบซเบปเบงเบเปเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ.
เบเบฑเปเบเบเบญเบเบเปเปเปเบเปเบกเปเบเบเบฒเบเบเบดเบเบเบฑเปเบ Spark เปเบฅเบฐเบเบฐเบกเบงเบเบเบปเบเบเบฒเบเบเปเบฒเบเบเบญเบเบเปเปเบเบงเบฒเบกเบเบตเป.
เบเบฒเบเบเบดเบเบเบฑเปเบ Apache Spark
Apache Spark เปเบเบฑเบเปเบเบฅเบฐเบเบฐเบเบญเบกเบเบญเบกเบเบตเบงเปเบเบตเบเบญเบเบเบธเปเบกเปเบเบเบเบปเปเบงเปเปเบ เปเบฅเบฐ เบเบฐเบชเบดเบเบเบดเบเบฒเบเบชเบนเบ.
Spark เบเบฐเบเบดเบเบฑเบเปเบเปเบเบตเบเบงเปเบฒเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบดเบเบปเบกเบเบญเบเบฎเบนเบเปเบเบ MapReduce เปเบเบเบฐเบเบฐเบเบตเปเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฐเปเบเบเบเบฒเบเบเบดเบเปเบฅเปเบเบตเปเบเบงเปเบฒเบเบเบงเบฒเบ, เบฅเบงเบกเบเบฑเบเบเบฒเบเบชเบญเบเบเบฒเบกเปเบเบเปเบเปเบเบญเบเปเบฅเบฐเบเบฒเบเบเบธเบเปเบเปเบเบเปเปเบฒ. เบเบงเบฒเบกเปเบงเบกเบตเบเบปเบเบเบฒเบเบชเปเบฒเบเบฑเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเบธเบเปเบเปเบเบเปเปเบกเบนเบเบเปเบฒเบเบงเบเบซเบฅเบฒเบ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเปเบเบฑเบเบเบงเบฒเบกเปเบงเบเบตเปเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเบเปเบเปเบเบญเบเปเบเปเปเบเบเบเปเปเบเปเบญเบเปเบเปเปเบงเบฅเบฒเบเบฒเบเบตเบซเบผเบทเบเบปเปเบงเปเบกเบเบฅเปเบเปเบฒ. เบซเบเบถเปเบเปเบเบเบธเบเปเบเบเบเบตเปเปเบซเบเปเบเบตเปเบชเบธเบเบเบญเบ Spark เบเบตเปเปเบฎเบฑเบเปเบซเปเบกเบฑเบเปเบงเบซเบผเบฒเบเปเบกเปเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบดเบเปเบฅเปเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ.
เบเบญเบเบเบตเปเบเบทเบเบเบฝเบเปเบงเปเปเบ Scala, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบดเบเบเบฑเปเบเบกเบฑเบเบเปเบญเบ:
sudo apt-get install scala
เบเบฒเบงเปเบซเบฅเบเบเบฒเบเปเบเบเบขเบฒเบ Spark เบเบฒเบเปเบงเบฑเบเปเบเบเปเบเบฒเบเบเบฒเบ:
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
เปเบเบตเปเบกเปเบชเบฑเปเบเบเบฒเบเปเบ Spark เบเบฑเบเปเบเบฅเป bash:
vim ~/.bashrc
เปเบเบตเปเบกเปเบชเบฑเปเบเบเปเปเปเบเบเบตเปเบเปเบฒเบเบเบฑเบเบเบฒเบเบดเบเบฒเบ:
SPARK_HOME=/usr/local/spark
export PATH=$SPARK_HOME/bin:$PATH
เบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบซเบผเบฑเบเบเบฒเบเปเบฎเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบ bashrc:
source ~/.bashrc
เบเบฒเบเบเบณเปเบเป AWS PostgreSQL
เบเบฑเบเบซเบกเบปเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเปเบกเปเบเบเบฒเบเบเปเบฒเปเบเปเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบญเบฑเบเปเบซเบฅเบเบเปเปเบกเบนเบเบเบฒเบเบเบธเบเปเบเปเบเบเบฒเบเบชเบฒเบเบเปเปเบฒ. เบชเปเบฒเบฅเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบเปเบฅเบดเบเบฒเบ AWS RDS.
เปเบเบเบตเปเบเบญเบเปเบ AWS -> AWS RDS -> เบเบฒเบเบเปเปเบกเบนเบ -> เบชเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบ:
เปเบฅเบทเบญเบ PostgreSQL เปเบฅเบฐเบเบฅเบดเบ Next:
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ เบเบปเบงเบขเปเบฒเบเบเบตเปเปเบกเปเบเปเบเบทเปเบญเบเบฒเบเบชเบถเบเบชเบฒเปเบเบปเปเบฒเบเบฑเปเบ; เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเปเบเบตเบเปเบงเบตเบเบฃเบต โเบขเปเบฒเบเบเปเปเบฒโ (Free Tier):
เบเปเปเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบญเบปเบฒเบซเบกเบฒเบเบเบดเบเปเบชเปเปเบ Free Tier block, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเปเบซเบเบตเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบญเบ t2.micro class - เปเบเบดเบเปเบกเปเบเบงเปเบฒเบญเปเบญเบเปเบญ, เบกเบฑเบเปเบกเปเบเบเปเปเปเบชเบเบเปเบฒเปเบฅเบฐเบเปเบญเบเบเปเบฒเบเปเบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบเบงเบฝเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ:
เบเปเปเปเบเบชเบดเปเบเบเบตเปเบกเบตเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบซเบผเบฒเบ: เบเบทเปเบเบญเบเบเบปเบงเบขเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบ, เบเบทเปเบเบญเบเบเบนเปเปเบเปเบเบปเปเบเบชเบฐเบเบฑเบเปเบฅเบฐเบฅเบฐเบซเบฑเบเบเปเบฒเบเบเบญเบเบฅเบฒเบง. เปเบซเปเบเบฑเปเบเบเบทเปเบเบปเบงเบขเปเบฒเบ: myHabrTest, เบเบนเปเปเบเปเบเบปเปเบเบชเบฐเบเบฑเบ: habr, เบฅเบฐโเบซเบฑเบโเบเปเบฒเบโ: habr12345 เปเบฅเบฐโเปเบซเปโเบเบฅเบดเบโเปเบชเปโเบเบธเปเบกโเบเปเปโเปเบโ:
เปเบเบซเบเปเบฒเบเปเปเปเบเบกเบตเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบตเปเบฎเบฑเบเบเบดเบเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฒเบเบเบฒเบเบเบญเบ (เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบชเบฒเบเบฒเบฅเบฐเบเบฐ) เปเบฅเบฐเบเบงเบฒเบกเบเปเบญเบกเบเบญเบเบเบญเบ:
เปเบซเปเบชเปเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบซเบกเปเบชเปเบฒเบฅเบฑเบเบเบธเปเบกเบเบงเบฒเบกเบเบญเบเปเบ VPC, เปเบเบดเปเบเบเบฐเบเปเบงเบเปเบซเปเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเบเบญเบเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบเบญเบ 5432 (PostgreSQL).
เปเบซเปเปเบเบเบตเปเบเบญเบเปเบ AWS เปเบเบเปเบญเบเบขเปเบฝเบกเบเบญเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบเปเบเบเบเปเบฒเบเบซเบฒเบเปเบเบซเบฒ VPC Dashboard -> เบเบธเปเบกเบเบงเบฒเบกเบเบญเบเปเบ -> เบชเปเบฒเบเบเบธเปเบกเบเบงเบฒเบกเบเบญเบเปเบ:
เบเบงเบเปเบฎเบปเบฒเบเบฑเปเบเบเบทเปเบชเปเบฒเบฅเบฑเบเบเบธเปเบกเบเบงเบฒเบกเบเบญเบเปเบ - PostgreSQL, เบเปเบฒเบญเบฐเบเบดเบเบฒเบ, เบเบตเปเบเบญเบเบงเปเบฒ VPC เบเบธเปเบกเบเบตเปเบเบงเบเบเบฐเบเบทเบเปเบเบทเปเบญเบกเปเบเบเบเบฑเบเปเบฅเบฐเบเบปเบเบเบธเปเบกเบชเปเบฒเบ:
เบเบทเปเบกเบเปเปเบกเบนเบเปเบชเปเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเปเบเบปเปเบฒเบชเปเบฒเบฅเบฑเบเบเบญเบ 5432 เบชเปเบฒเบฅเบฑเบเบเบธเปเบกเบเบตเปเบชเปเบฒเบเปเบซเบกเป, เบเบฑเปเบเบเบตเปเบชเบฐเปเบเบเบขเบนเปเปเบเบฎเบนเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป. เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบฅเบฐเบเบธเบเบญเบเบเปเบงเบเบเบปเบเปเบญเบ, เปเบเปเปเบฅเบทเบญเบ PostgreSQL เบเบฒเบเบฅเบฒเบเบเบฒเบเปเบเบเปเบฅเบทเปเบญเบเบฅเบปเบเบเบฐเปเบเบ.
เปเบงเบปเปเบฒเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบ, เบกเบนเบเบเปเบฒ ::/0 เบซเบกเบฒเบเปเบเบดเบเบเบฒเบเบกเบตเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเปเบเบปเปเบฒเบกเบฒเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเบปเปเบงเปเบฅเบ, เปเบเบดเปเบเบเปเปเปเบกเปเบเบเบงเบฒเบกเบเบดเบเบเบฑเบเบซเบกเบปเบ, เปเบเปเปเบเบทเปเบญเบงเบดเปเบเบฒเบฐเบเบปเบงเบขเปเบฒเบ, เปเบซเปเบเบงเบเปเบฎเบปเบฒเบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบเปเบงเบดเบเบตเบเบฒเบเบเบตเป:
เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบทเบเปเบเบซเบฒเบซเบเปเบฒเบเบปเบงเบเปเบญเบเปเบงเบฑเบ, เบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบกเบต "เบเบฑเปเบเบเปเบฒเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฑเปเบเบชเบนเบ" เปเบเบตเบเปเบฅเบฐเปเบฅเบทเบญเบเปเบเบเบฒเบเบเบธเปเบกเบเบงเบฒเบกเบเบญเบเปเบ VPC -> เปเบฅเบทเบญเบเบเบธเปเบกเบเบงเบฒเบกเบเบญเบเปเบ VPC เบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบง -> PostgreSQL:
เบเปเปเปเบ, เปเบเบเบปเบงเปเบฅเบทเบญเบเบเบฒเบเบเปเปเบกเบนเบ -> เบเบทเปเบเบฒเบเบเปเปเบกเบนเบ -> เบเบฑเปเบเบเบทเป - habrDB.
เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบญเบญเบเบเบฒเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญ, เบเบปเบเปเบงเบฑเปเบเบเบฒเบเบเบดเบเบเบฒเบเบชเปเบฒเบฎเบญเบเบเปเปเบกเบนเบ (เปเบฅเบเบฐเปเบงเบฅเบฒเปเบเบฑเบเบฎเบฑเบเบชเบฒเบชเปเบฒเบฎเบญเบเบเปเปเบกเบนเบ - 0 เบกเบทเป), เบเบฒเบเบเบดเบเบเบฒเบกเปเบฅเบฐเบเบฒเบเบเบฐเบเบดเบเบฑเบ Insights, เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ. เปเบซเปเบเบฅเบดเบเปเบชเปเบเบธเปเบก เบชเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบ:
เบเบปเบงเบเบฑเบเบเบฒเบเบเบฐเบเบนเป
เบเบฑเปเบเบเบญเบเบชเบธเบเบเปเบฒเบเบเบฐเปเบเบฑเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบงเบฝเบ Spark, เปเบเบดเปเบเบเบฐเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบเปเบซเบกเปเบเบตเปเบกเบฒเบเบฒเบ Kafka เบเบธเบเปเบชเบญเบเบงเบดเบเบฒเบเบตเปเบฅเบฐเปเบชเปเบเบปเบเปเบเปเบฎเบฑเบเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบเปเปเบกเบนเบ.
เบเบฑเปเบเบเบตเปเปเบเปเบเปเบฒเบงเปเบงเปเบเปเบฒเบเปเบเบดเบ, เบเบธเบเบเบงเบเบเบฒเปเบกเปเบเบเบปเบเปเบเบซเบผเบฑเบเปเบ SparkStreaming เบเบตเปเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบเบงเบฒเบกเบเบปเบเบเบฒเบเบเปเปเบเบงเบฒเบกเบเบดเบเบเบฒเบ. เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเปเบเบธเบเบเบงเบเบเบฒเปเบฅเบฐ, เบเปเบฒเบเบฑเปเบเบเบญเบเบฅเบปเปเบกเปเบซเบฅเบง, เปเบกเบเบนเบ Spark Streaming เบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเบเบฑเบเบเบทเบเปเบเบซเบฒเบเบธเบเบเบงเบเบเบฒเบชเบธเบเบเปเบฒเบเปเบฅเบฐเบชเบทเบเบเปเปเบเบฒเบเบเบดเบเปเบฅเปเบเบฒเบเบกเบฑเบเปเบเบทเปเบญเบเบทเปเบเบเบปเบงเบเปเปเบกเบนเบเบชเบนเบเปเบชเบ.
เบเบฒเบเบเบงเบเบชเบญเบเบชเบฒเบกเบฒเบเบเบทเบเปเบเบตเบเปเบเปเปเบเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบเบฅเบฐเบเบปเบเปเบเบฅเปเบเบตเปเบเบปเบเบเบฒเบเบเปเปเบเบงเบฒเบกเบเบดเบ, เปเบเบทเปเบญเบเบทเปเบเป (เปเบเบฑเปเบ HDFS, S3, เปเบฅเบฐเบญเบทเปเบเป) เปเบเบดเปเบเบเปเปเบกเบนเบเบเปเบฒเบเบเบฐเบเบทเบเปเบเบฑเบเปเบงเป. เบเบตเปเปเบกเปเบเปเบฎเบฑเบเปเบเปเปเบเบเปเบเปเบเบปเบงเบขเปเบฒเบ:
streamingContext.checkpoint(checkpointDirectory)
เปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเปเบงเบดเบเบตเบเบฒเบเบเบฑเปเบเบเปเปเปเบเบเบตเป, เบเบท, เบเปเบฒ checkpointDirectory เบกเบต, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบชเบฐเบเบฒเบเบเบฒเบเบเบฐเบเบทเบเบชเปเบฒเบเปเบซเบกเปเบเบฒเบเบเปเปเบกเบนเบเบเปเบฒเบ. เบเปเบฒเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเปเบกเบต (i. e. เบเบฐเบเบดเบเบฑเบเบเบฑเปเบเบเปเบฒเบญเบดเบ), เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ functionToCreateContext เบเบทเบเปเบญเบตเปเบเปเบเบทเปเบญเบชเปเบฒเบเบชเบฐเบเบฒเบเบเบฒเบเปเบซเบกเปเปเบฅเบฐเบเปเบฒเบซเบเบปเบเบเปเบฒ DStreams:
from pyspark.streaming import StreamingContext
context = StreamingContext.getOrCreate(checkpointDirectory, functionToCreateContext)
เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบงเบฑเบเบเบธ DirectStream เปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบซเบปเบงเบเปเป "เบเบธเบฅเบฐเบเปเบฒ" เปเบเบเปเบเปเบงเบดเบเบตเบเบฒเบ createDirectStream เบเบญเบเบซเปเบญเบเบชเบฐเปเบธเบ KafkaUtils:
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")
เบเบฒเบเบเปเบฒเปเบเป Spark SQL, เบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเบเบฒเบเบเบฑเบเบเบธเปเบกเปเบเบเบเปเบฒเบเบเบฒเบเปเบฅเบฐเบชเบฐเปเบเบเบเบปเบเปเบเปเบฎเบฑเบเปเบ console:
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
เปเบญเบปเบฒเบเปเปเบเบงเบฒเบกเบชเบญเบเบเบฒเบกเปเบฅเบฐเปเบฅเปเบเบกเบฑเบเบเปเบฒเบ Spark SQL:
sql_query = get_sql_query()
testResultDataFrame = spark.sql(sql_query)
testResultDataFrame.show(n=5)
เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบถเบเบเปเปเบกเบนเบเบฅเบงเบกเบเบปเบเปเบเปเบฎเบฑเบเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบฐเบฅเบฒเบเปเบ AWS RDS. เปเบเบทเปเบญเบเบฑเบเบเบถเบเบเบปเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเปเบงเปเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบเปเปเบกเบนเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบงเบดเบเบตเบเบฒเบเบเบฝเบเบเบญเบเบงเบฑเบเบเบธ DataFrame:
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. เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบนเปเปเบเปเปเบฅเบฐเบฅเบฐเบซเบฑเบเบเปเบฒเบเบชเปเบฒเบฅเบฑเบเบกเบฑเบเบขเบนเปเปเบเบเบฑเปเบเบเบญเบ "Deploying AWS PostgreSQL". เบเปเบฒเบเบเบงเบเปเบเป Endpoint เปเบเบฑเบ url เปเบเบตเบเปเบงเบตเบเบฒเบเบเปเปเบกเบนเบ, เปเบเบดเปเบเบชเบฐเปเบเบเบขเบนเปเปเบเบเบฒเบ Connectivity & security:
เปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเป Spark เปเบฅเบฐ Kafka เบขเปเบฒเบเบเบทเบเบเปเบญเบ, เบเปเบฒเบเบเบงเบเปเบฎเบฑเบเบงเบฝเบเบเปเบฒเบ smark-submit เปเบเบเปเบเป artifact. 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 เบงเบดเบเบฒเบเบต, เปเบเบฒเบฐเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบเบเปเบงเบเปเบงเบฅเบฒ batching เปเบเบฑเบ 2 เบงเบดเบเบฒเบเบตเปเบกเบทเปเบญเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบงเบฑเบเบเบธ StreamingContext:
เบเปเปเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเปเบเบเบชเบญเบเบเบฒเบกเบเปเบฒเบเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเปเบเบทเปเบญเบเบงเบเปเบเบดเปเบเบเบฒเบเบเบฐเบเบปเบเบเบปเบงเบเบญเบเบเบฑเบเบเบถเบเปเบเบเบฒเบเบฐเบฅเบฒเบ transaction_flow:
เบชเบฐเบซเบฅเบธเบ
เบเบปเบเบเบงเบฒเบกเบเบตเปเปเบเปเปเบเบดเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบเปเบเบเปเบเป Spark Streaming เปเบเบเบชเบปเบกเบเบปเบเบเบฑเบ Apache Kafka เปเบฅเบฐ PostgreSQL. เบเปเบงเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเบเบญเบเบเปเปเบกเบนเบเบเบฒเบเปเบซเบผเปเบเบเปเบฒเบเป, เบกเบฑเบเปเบเบฑเบเบเบฒเบเบเบฒเบเบเบตเปเบเบฐเบเบฐเปเบกเบตเบเบกเบนเบเบเปเบฒเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบ Spark Streaming เปเบเบตเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบเบฒเบเบเปเบฒเบเบเบญเบเปเบฅเบฐเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเปเบงเบฅเบฒเบเบดเบ.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบฅเบฐเบซเบฑเบเปเบซเบผเปเบเปเบเบฑเบกเปเบ repository เบเบญเบเบเปเบญเบเบขเบนเปเบเบตเป
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบดเบเบเบตเบเบตเปเบเบฐเบชเบปเบเบเบฐเบเบฒเบเบปเบเบเบงเบฒเบกเบเบตเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบซเบงเบฑเบเบงเปเบฒเบเบฐเปเบเปเบเปเบฒเบเบดเบเปเบซเบฑเบเบเบญเบเบเปเบฒเบ, เปเบฅเบฐเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฑเบเบซเบงเบฑเบเบงเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบงเบดเบเบฒเบเบงเบดเบเบฒเบเบเบฒเบเบเปเปเบชเปเบฒเบเบเบฒเบเบเบนเปเบญเปเบฒเบเบเบตเปเปเบเบฑเบเบซเปเบงเบเปเบเบฑเบเปเบเบเบธเบเบเบปเบ.
เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปโเปเบซเปโเบเปเบฒเบโเบชเบปเบโเบเบปเบโเบชเปเบฒโเปเบฅเบฑเบโ!
เบ. เปเบเปเบเบทเปเบญเบเบเบปเปเบเบกเบฑเบเปเบเปเบเบทเบเบงเบฒเบเปเบเบเบเบตเปเบเบฐเปเบเปเบเบฒเบเบเปเปเบกเบนเบ PostgreSQL เบเปเบญเบเบเบดเปเบ, เปเบเปเบเปเบญเบเบเบงเบฒเบกเบฎเบฑเบเบเบญเบเบเปเบญเบเบชเปเบฒเบฅเบฑเบ AWS, เบเปเบญเบเปเบเปเบเบฑเบเบชเบดเบเปเบเบเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเปเบเบเบฑเบเปเบกเบ. เปเบเบเบปเบเบเบงเบฒเบกเบเปเปเปเบเบเปเบฝเบงเบเบฑเบเบซเบปเบงเบเปเปเบเบตเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบชเบฐเปเบเบเบงเบดเบเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบฅเบฐเบเบปเบเบเบฑเบเบซเบกเบปเบเบเบตเปเปเบเปเบญเบฐเบเบดเบเบฒเบเบเปเบฒเบเปเบเบดเบเปเบ AWS เปเบเบเปเบเป AWS Kinesis เปเบฅเบฐ AWS EMR. เบเบดเบเบเบฒเบกเบเปเบฒเบง!
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com