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公式サイト

まとめ

今回はpysparkについて調べたことまとめてみました。 まだ理解が浅いイメージですね。

Nakano
Nakano
Back-end engineer

AWS,Rails,UE4,vue.js,hugo,その他なんでもやりたい