แแแแแ แฏแแแ, แฐแแแ ! แแฆแแก แฉแแแ แแแแจแแแแแ แกแแกแขแแแแก, แ แแแแแแช แแแแแฃแจแแแแแก Apache Kafka-แก แจแแขแงแแแแแแแแแแก แแแแแแแแก Spark Streaming-แแก แแแแแงแแแแแแ แแ แฉแแฌแแ แก แแแแฃแจแแแแแแก แจแแแแแแแก AWS RDS แฆแ แฃแแแแแแ แแแแแชแแแแ แแแแแจแ.
แฌแแ แแแแแแแแแแ, แ แแ แแแ แแแแฃแแ แกแแแ แแแแขแ แแแฌแแกแแแฃแแแแ แแแกแแฎแแแก แแแแชแแแแก, แแแแแแฃแจแแแ แจแแแแแแแแแ แขแ แแแแแฅแชแแแแ แแแก แงแแแแ แคแแแแแแจแ. แแก แจแแแซแแแแ แแแแแแแแก แฎแแแแแแก แฆแแ แแแแฃแขแแก แแแแแชแแแก, แขแ แแแแแฅแชแแแแแก แแแแแขแแแแก แแ แคแแแแแกแฃแ แ แจแแแแแแแแก แแ แ.แจ.
แ แแแแ แแแแแแฎแแ แชแแแแแ แแก แกแแฅแแ แฏแแแแกแแฃแ แ แแ แฏแแแแกแแฃแ แ แจแแแแชแแแแแก แแแแแงแแแแแแก แแแ แแจแ - แฌแแแแแแฎแแ แญแ แแแจแ! แฌแแแ!
แจแแกแแแแแ
แ แ แแฅแแ แฃแแแ, แแแแ แ แแแแแแแแแ แแแแแชแแแแแแก แ แแแแฃแ แแ แแจแ แแแแฃแจแแแแแ แแแแแแแแ แแแ แกแแกแขแแแแแจแ แแแแแงแแแแแแก แฃแแแ แแ แจแแกแแซแแแแแแแแแก แแซแแแแ. แแแแก แแ แ-แแ แแ แงแแแแแแ แแแแฃแแแ แฃแแ แแแแแแแแชแแแ Apache Kafka-แกแ แแ Spark Streaming-แแก แขแแแแแแ, แกแแแแช แแแคแแ แฅแแแแก แจแแแแแแแแแ แจแแขแงแแแแแแแแแแก แแแแแขแแแแก แแแแแแก แแ Spark Streaming แแแฃแจแแแแแก แแ แแแแแขแแแก แแแชแแแฃแ แแ แแแก แแแขแแ แแแแจแ.
แแแแแแแชแแแก แจแแชแแแแแก แขแแแแ แแแขแแแแก แแแกแแแ แแแแแ, แฉแแแ แแแแแแแงแแแแแ แกแแแฃแจแแแแแแก. แแ แแแฅแแแแแแแ, แ แแแแกแแช Spark Streaming แซแ แแแแก แกแญแแ แแแแ แแแแแ แแฃแแ แแแแแชแแแแแแก แแฆแแแแแ, แแแก แแฎแแแแ แแแแ แกแแแฃแจแแแแแ แแแแ แฃแแแแ แกแญแแ แแแแ แแ แแฅแแแแ แแแแแแฎแแแแก แแแแแแแแแแ.
แแแแแแแแ แแแฃแแ แกแแกแขแแแแก แแ แฅแแขแแฅแขแฃแ แ
แแแแแงแแแแแฃแแ แแแแแแแแแขแแแ:
Apache Kafka แแ แแก แแแแแฌแแแแแฃแแ แแแแแฅแแแงแแแแ-แแแแแฌแแ แแก แจแแขแงแแแแแแแแแแก แกแแกแขแแแ. แแแ แแแกแแ แ แแแแ แช แแคแแแแ, แแกแแแ แแแแแแ แจแแขแงแแแแแแแแแแก แแแฎแแแ แแแแกแแแแก. แแแแแชแแแแ แแแแแ แแแแก แแแแแแแ แแกแแชแแแแแแแ, แแแคแแแก แจแแขแงแแแแแแแแแ แแแแฎแแแ แแแกแแแ แแ แแ แแแแแแแ แแแแกแขแแ แจแ. Kafka แกแแกแขแแแ แแแแแฃแแแ ZooKeeper แกแแแฅแ แแแแแแชแแแก แกแแ แแแกแแก แแแแแ;Apache Spark Streaming - Spark แแแแแแแแแขแ แแแแแแแก แแแแแชแแแแแแก แแแกแแแฃแจแแแแแแแ. Spark Streaming แแแแฃแแ แแแแแฃแแแ แแแแ แ-แกแแ แแฃแแ แแ แฅแแขแแฅแขแฃแ แแก แแแแแงแแแแแแ, แกแแแแช แแแแแชแแแแ แแแแแแ แแแขแแ แแ แแขแแ แแแฃแแแ, แ แแแแ แช แแชแแ แ แแแแแชแแแแ แแแแแขแแแแก แฃแฌแงแแแขแ แแแแแแแแแแ แแแ. Spark Streaming แแฆแแแก แแแแแชแแแแแก แกแฎแแแแแกแฎแแ แฌแงแแ แแแแ แแ แแแ แแแแแแแก แแแ แแชแแ แ แแแแแขแแแจแ. แแฎแแแ แแแแแขแแแ แแฅแแแแแ แ แแแฃแแแ แฃแแ แแแขแแ แแแแแแแ. แงแแแแแ แแ แแแก แแแขแแ แแแแแก แแแกแแฌแงแแกแจแ แแฅแแแแแ แแฎแแแ แแแแแขแ แแ แแ แแแขแแ แแแแแก แแแแแแแแแแแจแ แแแฆแแแฃแแ แแแแแกแแแแ แ แแแแแชแแแ แจแแแแก แแแแแขแจแ. แแแขแแ แแแแแก แแแแแก, แแแแแขแแก แแ แแ แฉแแ แแแแ. แแแขแแ แแแแแก แแแแ แแแแแกแแแฆแแ แแแ แแแ แแแแขแ แแ, แ แแแแแกแแช แแฌแแแแแ แแแ แขแแฃแแ แแแขแแ แแแแ;Apache Spark SQL - แแแ แแแแแแแก แฃแ แแแแ แแแแแ แแแแฃแจแแแแแแก Spark-แแก แคแฃแแฅแชแแฃแ แแ แแแ แแแแ แแแแกแแแ. แกแขแ แฃแฅแขแฃแ แแ แแแฃแแ แแแแแชแแแแแ แแแจแแแแก แแแแแชแแแแแก, แ แแแแแแกแแช แแฅแแ แกแฅแแแ, แแแฃ แแแแแแแก แแ แแ แแแแ แแแ แงแแแแ แฉแแแแฌแแ แแกแแแแก. Spark SQL แแฎแแ แก แฃแญแแ แก แจแแงแแแแแก แกแฎแแแแแกแฎแแ แกแขแ แฃแฅแขแฃแ แแ แแแฃแแ แแแแแชแแแแ แฌแงแแ แแแแ แแ, แกแฅแแแแก แแแคแแ แแแชแแแก แฎแแแแแกแแฌแแแแแแแแก แฌแงแแแแแแ, แแแก แจแแฃแซแแแ แแคแแฅแขแฃแ แแ แแแแซแแแก แฉแแแแฌแแ แแแแก แแฎแแแแ แกแแญแแ แ แแแแแแ แแ แแกแแแ แฃแแ แฃแแแแแงแแคแก DataFrame API-แแแก;AWS RDS แแ แแก แจแแแแ แแแแ แแแคแ แฆแ แฃแแแแแ แแแคแฃแซแแแแฃแแ แ แแแแชแแฃแ แ แแแแแชแแแแ แแแแ, แแแ แกแแ แแแกแ, แ แแแแแแช แแแแ แขแแแแแก แแแงแแแแแแก, แแแแ แแชแแแก แแ แแแกแจแขแแแแ แแแแก แแ แแแแแแแกแขแ แแ แแแแก แแฎแแแแก แฃแจแฃแแแแ Amazon-แแก แแแแ .
แแแคแแแก แกแแ แแแ แแก แแแกแขแแแแชแแ แแ แแแจแแแแ
แแแคแแแก แแแ แแแแแ แแแแแงแแแแแแแแ แฃแแแ แแแ แฌแแฃแแแแ, แ แแ แแแฅแแ แฏแแแ, แ แแแแแ... JVM แแแแแแงแแแแแ แกแแแฃแจแแแ:
sudo apt-get update
sudo apt-get install default-jre
java -version
แแแแแ แจแแแฅแแแแ แแฎแแแ แแแแฎแแแ แแแแแ แแแคแแแกแแแ แกแแแฃแจแแแ:
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
แแแคแแแก แกแแ แแแ แแก แแแฌแงแแแแแแ, แแฅแแแ แฃแแแ แแแฃแจแแแ ZooKeeper แกแแ แแแ แ; แฉแแแ แแแแแแแงแแแแแ แแแแฎแแแ แ แกแแ แแแขแก, แ แแแแแแช แแแงแแแแ แแแคแแแก แแแแแฌแแแแแแก:
Cd ~/kafka
bin/zookeeper-server-start.sh config/zookeeper.properties
แแแก แจแแแแแ, แ แแช ZooKeeper แฌแแ แแแขแแแแ แแแแฌแงแ, แแแฃแจแแแ Kafka แกแแ แแแ แ แชแแแแ แขแแ แแแแแแจแ:
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()
แกแแ แแแขแแก แแแจแแแแแกแแก แขแแ แแแแแแจแ แแแฆแแแ แจแแแแแ แจแแขแงแแแแแแแแแก:
แแก แแแจแแแแก, แ แแ แงแแแแแคแแ แ แแฃแจแแแแก แแกแ, แ แแแแ แช แฉแแแ แแแแแแแแ - แแ แแแแฃแกแแ แ แฅแแแแก แแ แแแแแแแแก แจแแขแงแแแแแแแแแก แฉแแแแแแแก แกแแญแแ แ แแแแแแ.
แจแแแแแแ แแแแแฏแ แแ แแก 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 แแ แแแแญแแ แแ แจแแแแแแ:
แแแแขแแ แ แแ แแก แแแแแแแแ แแฎแแแแ แกแแแแแแแแแแแแแแ แแแแแแแแกแแแแกแแ; แฉแแแ แแแแแแแงแแแแแ แฃแคแแกแ แกแแ แแแ แก โแแแแแแฃแโ (แฃแคแแกแ แแแแ):
แจแแแแแแ, แฉแแแ แฉแแแกแแแแ แขแแแก Free Tier แแแแแจแ แแ แแแแก แจแแแแแ แแแขแแแแขแฃแ แแ แจแแแแแแแแแแแแแแ t2.micro แแแแกแแก แแแแแแแแก - แแฃแแชแ แกแฃแกแขแแ, แแก แฃแคแแกแแ แแ แกแแแแแแ แจแแกแแคแแ แแกแแ แฉแแแแ แแแแชแแแแก แจแแกแแกแ แฃแแแแแแ:
แจแแแแแ แแแแแก แซแแแแแ แแแแจแแแแแแแแแ แ แแ: แแแแแชแแแแ แแแแแก แแแแแแแแแก แกแแฎแแแ, แแแแแแ แ แแแแฎแแแ แแแแแก แกแแฎแแแ แแ แแแกแ แแแ แแแ. แแแแแ แแแแแกแแฎแแแแ แแแแแแแแ: myHabrTest, แซแแ แแแแแ แแแแฎแแแ แแแแแ: แฐแแแ , แแแ แแแ: habr12345 แแ แแแแญแแ แแ แฆแแแแแก แจแแแแแแ:
แจแแแแแ แแแแ แแแ แแ แแก แแแ แแแแขแ แแแ, แ แแแแแแแช แแแกแฃแฎแแกแแแแแแแแ แแ แแแ แฉแแแแ แแแแแชแแแแ แแแแแก แกแแ แแแ แแก แแแ แแแแ แฎแแแแแกแแฌแแแแแแแแแ (Public accessibility) แแ แแแ แขแแก แฎแแแแแกแแฌแแแแแแแแแ:
แแแแแ แจแแแฅแแแแ แแฎแแแ แแแ แแแแขแ แ VPC แฃแกแแคแ แแฎแแแแแก แฏแแฃแคแแกแแแแก, แ แแแแแแช แกแแจแฃแแแแแแก แแแกแชแแแก แแแ แ แฌแแแแแแก แฉแแแแก แแแแแชแแแแ แแแแแก แกแแ แแแ แแ แแแ แขแแ 5432 (PostgreSQL).
แแแแแ แแแแแแแแแ AWS แแแแกแแแแ แชแแแแ แแ แแฃแแแ แแก แคแแแฏแแ แแจแ VPC Dashboard -> แฃแกแแคแ แแฎแแแแแก แฏแแฃแคแแแ -> แจแแฅแแแแแ แฃแกแแคแ แแฎแแแแแก แฏแแฃแคแแก แกแแฅแชแแ:
แฉแแแ แแแแแงแแแแ แฃแกแแคแ แแฎแแแแแก แฏแแฃแคแแก แกแแฎแแแ - PostgreSQL, แแฆแฌแแ แ, แแแฃแแแแแ แ แแแแ VPC-แแแ แฃแแแ แแงแแก แแแแแแจแแ แแแฃแแ แแก แฏแแฃแคแ แแ แแแแญแแ แแ แฆแแแแแก แจแแฅแแแ:
แจแแแแกแแ แจแแแแแแแแแ แฌแแกแแแ 5432 แแแ แขแแกแแแแก แแฎแแแ แจแแฅแแแแแ แฏแแฃแคแแกแแแแก, แ แแแแ แช แแแฉแแแแแแแ แฅแแแแแ แแแชแแแฃแ แกแฃแ แแแแ. แแฅแแแ แแ แจแแแแซแแแแ แฎแแแแ แแแฃแแแแแ แแแ แขแ, แแแแ แแ แแแ แฉแแแ PostgreSQL แฉแแแแกแแจแแแแ แกแแแแแ Type.
แแแแชแ แแ แ แแ แแแฅแแแ, แแแแจแแแแแแแ ::/0 แแแจแแแแก แกแแ แแแ แแ แจแแแแแแแแแ แขแ แแคแแแแก แฎแแแแแกแแฌแแแแแแแแก แแแแแ แแกแแคแแแแแแ, แ แแช แแแแแแแแฃแ แแ แแแแแ แกแแแแ แแแแก แแ แจแแแกแแแแแแแ, แแแแ แแ แแแแแแแแแก แแแกแแแแแแแแแแแแ, แแแแแ แกแแแฃแแแ แแแแก แแแแชแแ แกแแจแฃแแแแแ แแแแแแแงแแแแ แแก แแแแแแแ:
แฉแแแ แแฃแแ แฃแแแแแแ แแ แแฃแแแ แแก แแแแ แแแ, แกแแแแช แแแฎแกแแแแ แแแแฅแแก โConfigure advanced settingsโ แแ แแแ แฉแแแ VPC แฃแกแแคแ แแฎแแแแแก แฏแแฃแคแแแแก แแแแงแแคแแแแแแจแ -> แแแ แฉแแแ แแ แกแแแฃแแ VPC แฃแกแแคแ แแฎแแแแแก แฏแแฃแคแแแ -> PostgreSQL:
แจแแแแแแ, แแแแแชแแแแ แแแแแก แแคแชแแแแจแ -> แแแแแชแแแแ แแแแแก แกแแฎแแแ -> แแแแงแแแแ แกแแฎแแแ - habrDB.
แฉแแแ แจแแแแแซแแแ แแแ แฉแแแแแ แแแ แแแแขแ แแแ แแแแขแแแแ, แแแ แแ แกแแ แแแแ แแ แแกแแแก (แกแแ แแแแ แแ แแกแแแก แจแแแแฎแแแก แแแแ - 0 แแฆแ) แแแแแ แแแแกแ, แแแแแขแแ แแแแแกแ แแ Performance Insights, แแแแฃแแแกแฎแแแแแ. แแแแญแแ แแ แฆแแแแแก แแแแแชแแแแ แแแแแก แจแแฅแแแ:
แซแแคแแก แแแแแฃแจแแแแแแแ
แแแกแแแแแแ แแขแแแ แแฅแแแแ Spark job-แแก แจแแแฃแจแแแแแ, แ แแแแแแช แงแแแแ แแ แฌแแแจแ แแ แแฎแแ แแแแแฃแจแแแแแก แแแคแแแแแ แแแกแฃแ แแฎแแ แแแแแชแแแแแก แแ แจแแแแแก แแแแแชแแแแ แแแแแจแ แจแแแขแแแก.
แ แแแแ แช แแแแแ แแฆแแแแจแแ, แกแแแฃแจแแแแแแ แแ แแก SparkStreaming-แแก แซแแ แแแแแ แแแฅแแแแแแ, แ แแแแแแช แฃแแแ แแงแแก แแแแคแแแฃแ แแ แแแฃแแ แจแแชแแแแแแแก แขแแแแ แแแขแแแแก แฃแแ แฃแแแแแกแแงแแคแแ. แฉแแแ แแแแแแแงแแแแแ แกแแแฃแจแแแแแแก แแ แแฃ แแ แแชแแแฃแ แ แแแ แแแฎแแ แฎแแ, Spark Streaming แแแแฃแแก แแฎแแแแ แแแแ แกแแแฃแจแแแแแ แแแแ แฃแแแแ แแ แแแกแแแ แแแแแแแแแก แแแแแฎแแแแ แแแกแญแแ แแแแ แแแแแ แแฃแแ แแแแแชแแแแแแก แแฆแกแแแแแแแ.
แแแแจแแแแ แแฃแแฅแขแแก แฉแแ แแแ แจแแกแแซแแแแแแแ แจแแชแแแแแก แขแแแแ แแแขแฃแ, แกแแแแแแ แคแแแแฃแ แกแแกแขแแแแแ (แ แแแแ แแชแแ HDFS, S3 แแ แ.แจ.) แแแ แแฅแขแแ แแแจแ แแแงแแแแแแ, แ แแแแแจแแช แจแแแแแฎแแแ แกแแแฃแจแแแแก แแแคแแ แแแชแแ. แแก แแแแแแแ แแแแแงแแแแแแ, แแแแแแแแแ:
streamingContext.checkpoint(checkpointDirectory)
แฉแแแแก แแแแแแแแจแ, แฉแแแ แแแแแแแงแแแแแ แจแแแแแ แแแแแแแแก, แแแ แซแแ, แแฃ checkpointDirectory แแ แกแแแแแก, แแแจแแ แแแแขแแฅแกแขแ แฎแแแแฎแแ แจแแแฅแแแแแ แกแแแฃแจแแแแก แแแแแชแแแแแแแแ. แแฃ แแแ แแฅแขแแ แแ แแ แแ แกแแแแแก (แแแฃ แจแแกแ แฃแแแแฃแแแ แแแ แแแแแ), แแแจแแ แคแฃแแฅแชแแToCreateContext แแแแแแซแแฎแแแ แแฎแแแ แแแแขแแฅแกแขแแก แจแแกแแฅแแแแแแ แแ DSstreams-แแก แแแแคแแแฃแ แแชแแแกแแแแก:
from pyspark.streaming import StreamingContext
context = StreamingContext.getOrCreate(checkpointDirectory, functionToCreateContext)
แฉแแแ แแฅแแแแ DirectStream แแแแแฅแขแก โแขแ แแแแแฅแชแแแกโ แแแแแกแแแ แแแกแแแแแจแแ แแแแแ 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")
Spark SQL-แแก แแแแแงแแแแแแ แแแแแแแแ แแแ แขแแ แแแฏแแฃแคแแแแก แแ แจแแแแแก แแแฉแแแแแแ แแแแกแแแจแ:
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-แแแ แแแแจแแ แแก แแแงแแแแแแก แจแแกแแฎแแ. แฉแแแ แจแแแฅแแแแแ แแแกแแแแก แแแแฎแแแ แแแแแ แแ แแแ แแแ "AWS PostgreSQL-แแก แแแแแ แแแแก" แแขแแแแ. แแฅแแแ แฃแแแ แแแแแแงแแแแ Endpoint, แ แแแแ แช แแแแแชแแแแ แแแแแก แกแแ แแแ แแก url, แ แแแแแแช แแแฉแแแแแแแ แแแแแแจแแ แแแแก แแ แฃแกแแคแ แแฎแแแแแก แแแแงแแคแแแแแแจแ:
Spark-แแกแ แแ Kafka-แก แกแฌแแ แแ แแแกแแแแแจแแ แแแแแ, แแฅแแแ แฃแแแ แจแแแกแ แฃแแแ แกแแแฃแจแแ smark-submit-แแก แกแแจแฃแแแแแแ, แแ แขแแคแแฅแขแแก แแแแแงแแแแแแ. spark-streaming-kafka-0-8_2.11. แแแ แแ แแแแกแ, แฉแแแ แแกแแแ แแแแแแแงแแแแแ แแ แขแแคแแฅแขแก PostgreSQL แแแแแชแแแแ แแแแแกแแแ แฃแ แแแแ แแแแแกแแแแก; แฉแแแ แแแ แแแแแแชแแแ --แแแแแขแแแแก แกแแจแฃแแแแแแ.
แกแแ แแแขแแก แแแฅแแแแแแแกแแแแก, แจแแงแแแแแก แแแ แแแแขแ แแแแ แแกแแแ แฉแแแ แแแแ แจแแขแงแแแแแแแแแแก แกแแ แแแ แแก แกแแฎแแแก แแ แแแแแก, แกแแแแแแแช แแแแแแ แแแแแชแแแแแแก แแแฆแแแ.
แแกแ แ แแ, แแ แแ แแแฃแจแแแ แแ แจแแแแแฌแแแ แกแแกแขแแแแก แคแฃแแฅแชแแแแแ แแแ:
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 แฌแแแแ:
แจแแแแแแ, แฉแแแ แแฃแแแแแแ แแแ แขแแ แแแแฎแแแแแก แแแแแชแแแแ แแแแแจแ, แ แแแ แจแแแแแแฌแแแ แฉแแแแฌแแ แแแแก แแ แกแแแแแ แชแฎแ แแแจแ แแแ แแแแแแก_แแแแแแ:
แแแกแแแแ
แแก แกแขแแขแแ แแแแแฎแแแแแแ แแแคแแ แแแชแแแก แแแแแแแก แแแแฃแจแแแแแแก แแแแแแแแก Spark Streaming-แแก แแแแแงแแแแแแ Apache Kafka-แกแแแ แแ PostgreSQL-แแแ แแ แแแ. แกแฎแแแแแกแฎแแ แฌแงแแ แแแแ แแแแแชแแแแแแก แแ แแแกแแแ แแ แแแ, แซแแแแแ แแแแแญแแ แแแแฃแแ แจแแคแแกแแแ Spark Streaming-แแก แแ แแฅแขแแแฃแแ แแแแจแแแแแแแแก แแแแแแแก แแ แ แแแแฃแ แแ แแจแ แแแแแแแชแแแแแก แจแแกแแฅแแแแแแ.
แแฅแแแ แจแแแแซแแแแ แแแแแแ แกแ แฃแแ แฌแงแแ แ แแแแ แฉแแแก แกแแชแแแจแ:
แกแแแแแแแแแแ แแแแแแฎแแแแ แแ แกแขแแขแแแก, แแแแแแแแ แแฅแแแแก แแแแแแขแแ แแแก แแ แแกแแแ แแแแแ แแแฅแแก แแแแกแขแ แฃแฅแชแแฃแแ แแ แแขแแแแก แงแแแแ แแแ แฃแแแแแ แแแแแฎแแแแแกแแแ.
แแแกแฃแ แแแแ แฌแแ แแแขแแแแก!
แคแก. แแแแแแแแ แแแแแ แแแแแแแแแแ แแแแแแแแ แแแ PostgreSQL แแแแแชแแแแ แแแแแก แแแแแงแแแแแ, แแแแ แแ AWS-แแกแแแแ แฉแแแ แกแแงแแแ แฃแแแก แแแแแแแแกแฌแแแแแแ, แแแแแแฌแงแแแขแ แแแแแชแแแแ แแแแแก แฆแ แฃแแแแจแ แแแแแขแแแ. แแ แแแแแแ แจแแแแแ แกแขแแขแแแจแ แแ แแแฉแแแแแแ, แแฃ แ แแแแ แฃแแแ แแแแแแฎแแ แชแแแแแ แแแแแ แแฆแฌแแ แแแ แแแแแ แกแแกแขแแแ AWS-แจแ AWS Kinesis-แแกแ แแ AWS EMR-แแก แแแแแงแแแแแแ. แแแฐแงแแแแ แกแแแฎแแแแแก!
แฌแงแแ แ: www.habr.com