Apache Sparkとは
ApacheSparkについて調べたのので簡単にまとめてみようかと思います。
ApacheSparkとは
一言で言うなら分散処理フレームワークですね。
分散処理は複数のサーバーもしくは複数のCPUでデータを分割し大量のデータを高速で処理できるようになります。
ビックデータと言われるRDB(リレーショナルデータベース管理システム)では処理が難しい場合に、使われるみたいですね。
AWS GlueなどでETL処理でも使われるようですね。
カリフォルニア大学バークレー校で開発が進められ、2014年にApacheソフトウェア財団に寄贈されました。
k8s上でも動くそうですね…
ApacheSparkが使える言語
Apache Sparkは、Java、Scala、Python、R などのAPIが提供されています。SparkはScalaで作成されています。
Apache Sparkコンポーネント
- Spark Core
- Spark SQL
- Spark Streaming
- Spark MLlib
- Spark GraphX
- SparkR
Spark Core
Spark CoreはSparkの中核です。 まぁいろんな機能が入ってるんでしょうねw
Spark SQL
Apache Spark SQLは、Python、Java、および ScalaでDataFrameおよびDataSet抽象化を使用して構造化データの操作を簡素化するSparkモジュールです 。
計算の表現にどのAPI /言語を使用するかに関係なく、結果の計算中に同じ実行エンジンが使用されます。
基本的に構造化データを扱う際にしようするモジュールでRDDの最適化版みたいなイメージだそうです
Spark Streaming
連続的に到着する無限のデータシーケンスを処理する際に、継続的に流れる入力データを個別のユニットに分割して、さらに処理します。
内部動作は次のとおりです。
- ライブ入力データストリームが受信され、
- Sparkストリーミングによってバッチに分割されます。
- Sparkエンジンによって処理され、結果の最終ストリームをバッチで生成します
Spark MLlib
機械学習使う時に使うモジュール
Spark GraphX
グラフ計算エンジンで、グラフ描画する時に使うモジュール。
SparkR
R言語でSparkを使う際に使うみたいです。
分散データセット-RDD
Sparkの主要な抽象概念はRDDです。RDDは、Resilient Distributed Datasetの頭字語です。これは、Sparkのデータの基本単位です。 map, flatMap, reduceなどのメソッドが使えるようです。
RDDはざっくり言うと、配列を任意の単位で区切ったもので、RDD単位で別のプロセス、別のノードで処理を行うことができます。
DataFrame
テーブルのようなデータ構造をもった分散処理用データセットです。テーブル構造なのでSQLライクにデータを操作できるようですね。
PythonでApacheSparkを使う
pyspark
まとめ
今回はpysparkについて調べたことまとめてみました。 まだ理解が浅いイメージですね。