AWSのGlueというサービスでPythonのSparkを使うことがあったのでSparkについて記載したいと思います。
(GlueはAWSの分析・集計などをしてくれるサービスです。)
以前から記載していた「pandas」「NumPy」に近いものがあります。
どんなことができるかと言うと
データに対してSQLが使用可能となっており、機械学習やグラフ理論が可能となっています。
今回設定したフローで紹介したいと思います。
(AWSのサービスを利用しているので環境は整った前提で記載します)
#特定のCSVファイルを読み込む
df = spark.read.csv([CSVパス], header=True, sep=’,’, inferSchema=True)
#テンポラリテーブル作成
df.createTempView(‘sample_table’)
#クエリ実行(条件も設定可能)
df2 = spark.sql(‘select id, sum(num) from sample_table group by id’)
#データフレームで記載すると
df2 = df.groupBy(‘id’).agg({‘num’: ‘sum’})
上記のようか感じでsqlが使用可能になります。
CSVファイルをテーブルとして扱え、そのテンポラリテーブルに対してSQLで実行できるといった感じです。
読み込むファイルによってはエラーがでるかも。
また、バージョンによって記載方法が異なるかもです。
(まだ、詳細な部分に関しては未調査)
これはSQLを理解している人にとっては便利ではないかと感じましたが…
問題は速度ですね。
実際に実装した環境がAWSのGlueでこのサービスはバッチ的なルールで裏で動くものです。
フロント側でこのsparkを利用していないのでわからないですが
Pythonの集計処理ツールを比較しているサイトをみた感じではsparkが一番早そうな記載をしていました。
以上、Sparkについてでした。