近年ではAI(人工知能)技術の発達によってビッグデータに大きな関心が集まっていますよね。実際、有名なIT企業では当たり前のように利用されており、DXを達成するためにはビッグデータは避けて通れません。
そこでこのビッグデータの解析におすすめなのが「Apache Spark」。Apache Sparkとは高速でデータを分散できるフレームワークのことです。
それではそんなApache Sparkの基本や同じ用途のフレームワーク「Hadoop」との違い。また、Apache Sparkで使えるコマンドやApache Sparkでデータ処理を行う方法、注意点などを説明します。最後にはApache Sparkでデータ処理をより効率的に行える方法も紹介していきましょう。
ぜひ、Apache Sparkでビッグデータの解析を行い、それをみなさんのビジネスに生かしてみてはどうでしょうか。
Apache Sparkとは
それでは、Apache Sparkがどのようなものなのかを以下で説明していきます。
並列分散処理に特化したフレームワーク
近年ではビッグデータの活用や機械学習などでこの種のフレームワークの重要性が高まっており、その中で2010年にApache Sparkはリリースされました。ちなみにApache Sparkと関連しているものとして「Hadoop」というフレームワークもあります。こちらについては次の章で説明していきましょう。
プログラミング言語に対応したAPIがある
なお、Apache Sparkの対応言語は以下のようになっています。
- Java
- Python
- R言語
- SQL
以上がApache Sparkの基本情報。
これを踏まえて以下ではApache SparkとHadoopとの違いを説明していきましょう。
Apache SparkとHadoopとの違い
まず最初に理解してほしいのがHadoopについてです。
ただし、両者には以下のような違いもあるのです。
- Apache Sparkはインメモリ、Hadoopは外部記憶装置で処理を行う
- RAMに収まる範囲であればHadoopよりもApache Sparkの方が高速で処理できる
- 大規模な処理を行う際にはApache SparkよりもHadoopの方が費用面で勝っている
一方でHadoopの外部記憶装置とはHDDやSSDを介して処理するということです。そのため、両者では処理速度やコスト面などで利害が生まれています。
上でも説明したようにHadoopでは外部記憶装置を介しますが、この際には読み取りを複数回行うので処理速度が劣ります。ただし、データ量があまりにも多い場合にはRAMの処理能力を超えてしまうため、その場合にはHadoopの方が速く並列処理できることも。
なお、デバイスに関しての費用は処理するデータ量によります。
ですので、費用では大規模な処理を行う際にはApache SparkよりもHadoopの方が勝るのです。
以上がApache SparkとHadoopとの違いです。これらはあくまでも一例になりますが、やはりフレームワークとしての処理方法の違いによるところが大きいでしょう。現在ではビッグデータの解析では両者の長所を生かしながら、共存して利用されているのが実情です。
これを踏まえて以下ではApache Sparkで使えるコマンドをご紹介しましょう。
Apache Sparkで使えるコマンド
Apache Sparkは複数のプログラミング言語に対応したAPIが用意されています。ですから、Apache Sparkでデータの分散処理を行うには、それらを利用して行けばよいです。
具体的にはコマンドプロンプトなどのCUIを起動し、そこで以下のコマンドを使えば利用できます。
spark-shell
ちなみにこちらで導入ができているのかを確かめたり、他のコマンドを入力してデータ処理を行うことも可能です。
pyspark
Pythonに慣れているならこちらを利用した方がわかりやすいでしょう。
sparkR
以上がApache Sparkで使えるコマンドの紹介です。
今回は抜粋してお伝えしましたが、他にも利用できるコマンドはあります。興味があれば公式サイトなどからみてみましょう。
Apache Sparkでデータ処理を行う方法
今度はApache Sparkでデータ処理を行う方法を簡単に説明していきます。
Apache Sparkでは以下のような手順を踏めばデータ処理が可能です。なお、こちらはもっとも簡単なネットを介さないローカルでの方法。
1.処理を行うデータを用意する
まず、データ処理を行うには対象となるデータが必要です。
- ken,18,tokyo
- hime,16,fukuoka
- akira,21,kyoto
この際に名前は「name.csv」とでもしておきましょう。
2.上で紹介したコマンドを入力して対話モードを起動する
こちらはコマンドプロントなどから起動を行えば問題なくできるはずです。例としてはここではspark-shellを利用してください。
3.データを読み込み、関数を使って処理を行う
そして、データを読み込み、関数を使って処理を行っていきましょう。
ちなみにこの作業に関してはどのコマンドを利用するかによって変わります。今回はspark-shellを利用する例で説明していますが、PythonのAPIであるpysparkでは以下のようにいきません。より詳しく知りたい場合には公式のプログラミングガイドをみてください。
val file = sc.textFile("./name.csv") file: org.apache.spark.rdd.RDD[String] = ./name.csv MapPartitionsRDD[1] at textFile at :24
これでデータの読み込みができています。
file.first()
こちらはfirst関数というもので先頭の行を取得できるものです。そうすると以下のように表示されます。
res0: String = ken,18,tokyo
以上のように先頭行を抜き出す処理が行えました。
以上がApache Sparkを利用した簡単なデータ処理です。より深く学んでいけば大量なデータを複雑に処理することもできます。
よろしければ一度インストールして使ってみましょう。ただし、Apache Sparkを使うときには注意点もあるので、次の章でそれを説明していきます。
Apache Sparkを使うときの注意点
Apache Sparkを使うときには以下に注意しましょう。
環境構築を行う必要がある
まず、環境構築を行う必要があります。
環境変数を設定する
ちなみに設定方法はWindows10であれば以下の手順を踏みましょう。
- コントロールパネルを開く
- コントロールパネルよりシステムを選択
- システムから詳細設定のタブを選択する
そうすると「環境変数」のボタンがあるので、それをクリックすれば設定が行えます。あとは「新規」のボタンから適切な変数名と変数値を記入していけばOK。
詳しくは割愛しますが、それぞれの環境に合わせて調べれは詳細はすぐみつかります。
以上がApache Sparkを使うときの注意点です。詳しくは公式サイト、もしくは解説しているサイトなどをみながらやっていくとよいでしょう。そうすれば導入からプログラミングなどをしっかり学ぶことができます。
今回Apache Sparkについてお話をしました。
- Apache Sparkとは並列分散処理に特化したフレームワークである
- Apache Sparkはインメモリ、Hadoopは外部記憶装置で処理を行うという違いがある
- Apache Sparkでは基本のspark-shell、Python環境のAPIであるpysparkなどのコマンドが利用できる
- Apache Sparkはデータを用意し、コマンド入力を行って、関数で処理する
- 注意点としてApache Sparkでは環境構築、環境変数の設定を行う必要がある
これを踏まえてApache Sparkでデータ処理をより効率的に行える方法をお伝えしていきましょう。
- 「Spark shell application UI」を利用して効率的に処理を行う
こちらはspark-shellを利用した際に起動するWebUIであり、ネット上からApache Sparkのデータ処理を確認できるサービスです。例えば、どのような設定で処理が行われたのか。また、実行にどれくらいの時間が掛かったのかなどを詳しくみることができます。
将来的にApache Sparkで大量のデータを並列分散処理していきたいのなら、ぜひともこちらを使いこなせるようになるとよいでしょう。そうすればよりApache Sparkで効率的なデータ処理を行えます。
Apache SparkでビッグデータやAI(人工知能)技術などを活用し、ぜひみなさんのビジネスでDXを実現させましょう。
【お知らせ】
当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。
御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。