技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

Apache Spark のjavaでの実装についてちょっと調べてみた

Apache Spark 向けのコーディングをjavaで行う機会がありそうなので、空き時間にちょっと調べてみました。
 
・そもそもApache Sparkとは
分散処理用のフレームワークであり、簡潔なコードで分散処理の実装が可能になる。
複数のコンピュータで分散処理を行うことで、大量データを高速で処理することが可能になる。
分散処理用のフレームワークとしてはHadoopもあるが、Apache SparkはHadoopの弱点も解消している。
 
Apache Sparkとは何か――使い方や基礎知識を徹底解説 (1/3)

http://www.atmarkit.co.jp/ait/articles/1608/24/news014.html
 
Apache Sparkのコーディング概要(RDDクラスとは)
コーディングではRDDクラスを使用して大規模データセットを操作する。
RDDクラスには、データセットの値を変換する変換メソッドと、データセットの計算を行うアクションメソッドが存在する。
RDDクラスの戻り値となるデータセットには、Int型やString型、自分で定義したクラス型等を指定できる。
同じ計算についてはキャッシュで返すことも可能。
 
Apache Sparkとは何か――使い方や基礎知識を徹底解説 (3/3)

http://www.atmarkit.co.jp/ait/articles/1608/24/news014_3.html
 
・JavaRDDの生成方法とできること
JavaRDDは、外部データセット(ファイル)を読み込むか、コレクション型をparallelizeメソッドで読み込むことで生成できる。
JavaRDDの変換メソッドでは、条件を満たすレコードのみの抽出や文字列置換・挿入、重複排除等が可能である。
JavaRDDのアクションメソッドでは、RDD全体、要素数、最小値・最大値、先頭の要素値等を返すことができる。
キャッシングはpersistメソッドを使用することで可能。
 
SparkのRDDについて - TASK NOTES

https://www.task-notes.com/entry/20160112/1452525344
 
・タプル型の取り扱い(JavaPairRDD)
タプル型とは、メソッドから二つ以上のオブジェクトを返す時に使う型である。
Apache Sparkではタプル型を取り扱えるが、、scala.Table2等のクラスをimportした上で、JavaPairRDDクラスへの変換が必要である。
 
SparkのPairRDDについて

https://www.task-notes.com/entry/20160131/1454214972
 
・サンプルコード
(JavaRDDを使用する例)
Apache Spark で分散処理入門

https://qiita.com/Hiroki11x/items/4f5129094da4c91955bc
 
(JavaPairRDDを使用する例。文章中の単語数を数え上げるサンプルプログラム。)
Spark入門 _ Hadoop Advent Calendar 2016 #15 | DevelopersIO.html

https://dev.classmethod.jp/hadoop/hadoop-advent-calendar-15-introduction-spark/