‫お帰りなさい｡
‫そこで､ データエンジニアとして､ データを収集し､ データを取り込み､ データレイク（多くはHadoopクラスタ）に保存することを学びました｡
‫さて､ このデータレイクの考え方は､ S3のオブジェクトストレージのようなものでも利用できます｡
‫というわけで､ この2つが代表的なものです｡
‫そして､ データレイクに取り込まれたデータに対して､ 通常はバッチジョブを実行して､ データのクリーンアップや修正､
‫何らかの処理を行うことができます｡
‫Hadoopがそれを可能にしてくれたわけです｡
‫MapReduceでは､ Apache Sparkを利用することができます｡
‫Amazon S3上で手動でスクリプトを書くだけでもいいし､ SQLデータベースなどの一般的なデータベースで最高の仕事をすることもできる｡
‫しかし､ このストリーム処理という考え方は､ 現在では一般的になりつつあります｡
‫1時間ごと､ 1日ごとといったバッチ処理ではなく､ リアルタイムのストリーム処理という考え方が広まってきています｡
‫つまり､ データを受信したら､ 一度にバッチ処理できるようになるまで少し待つのではなく､ すぐに処理することです｡
‫これにより､ データに対するリアクションをより迅速に行うことができるようになりました｡
‫さて､ このストリーム処理の考え方はかなり複雑なのですが､ 今ストリーム処理に使われている主なツールに「Kafka」というものがあります｡
‫カフカ
‫彼らのウェブサイトを見ると､ 分散型ストリーミングプラットフォームであることがわかります｡
‫メッセージングシステムのように､ データのストリームを読み書きすることができます｡
‫加工もできるし､ データも保存できる｡
‫しかし､ Kafkaが何をするものかはお分かりの通り､ メッセージを受け取り､ それを別の場所に渡すことができるのです｡
‫そこでよく目にするのが､ これらのメッセージ､ ログ､ データをすべてのソースから受信するためにApache Kafkaを使用することです｡
‫一カ所に集めて､ それをカフカが別の場所に渡すことができるのです｡
‫例えば､ Kafkaが受け取ったものをHadoopのクラスターに渡して､ そのデータを保存することができます｡
‫そして､ 必要であれば､ Apache Sparkを使って､ そのデータをデータウェアハウスに処理することもできます｡
‫しかし､ 今はリアルタイム処理という考え方で､ Kafkaではウェル自体に物事を渡すことができるようになりました｡
‫Spark StreamingやFlink（Apache Flinkはストリーム処理によく使われています）､
‫Apache Storm､ AmazonのKinesisも､ 実はKafkaのように配置して､ すべての場所からのメッセージを処理することが可能です｡
‫さて､ 結局のところ､ どれもこれも分かりにくかったかもしれません｡
‫このようなツールがあることに圧倒されるかもしれません｡
‫しかし､ このセクションの冒頭で述べたことを思い出してください｡
‫データエンジニアとは､ データサイエンティストとして交流する人です｡
‫そのため､ 彼らが何をし､ どんな役割を果たし､ どんな責任を負っているのかを知っておくとよいでしょう｡
‫あなたがデータを利用し､ その上で分析を行ったり､ 機械学習モデルを構築するためには､ 彼らと密接に連携することになります｡
‫でも､ この図を見て､ 納得していただけたでしょうか｡
‫データエンジニアは､ Kafkaでデータを取り込み､ HadoopやAmazon S3などを使って情報を保存し､
‫このような状況を作り出します｡
‫Apache SparkやKinesisなどを使って､ そのデータを処理するのです｡
‫そして､ データウェアハウスに保存されたデータまで｡
‫ですから､ RedshiftやBigQueryといったツールは､ ビジネス内部の人間がデータから何か有益なことを学ぶために使うことができます｡
‫あなたが活躍するための構造を構築するのです｡
‫だから､ 優しくしてあげてください｡
‫もしあなたがこれらの技術に興味を持ったなら､ それらは非常に速く変化していますが､ 一見の価値がありますし､
‫あなたが思っているほど学ぶのは怖くはないでしょう｡
‫次回作でお会いしましょう｡
‫バイバイ｡