モブプロな人たちのブログ

Web サービス開発しているエンジニアの日記です。Python 大好き Flask 大好き。たまに Swift で iOS ゲーム開発も。

AWS Glue スクリプトの検証環境が欲しくて、PySpark 環境を構築してみた

こんにちは、kaorr です。

一人アドベントカレンダー4日目です。

はじめに

AWS Glue のスクリプトを作り込むことになったんですが、毎回 AWS コンソール上でスクリプト作ってたらいつまで経っても検証が終わらないです・・・。

そこで、『完全再現は難しくても、PySpark 環境作れば検証が楽になるんじゃないか?』と思い立ち、早速作ってみました。

今回は、サンプルデータをロードするところまでです。

f:id:kaorr_mob:20171203091405j:plain

環境構築

  • AWS EC2 インスタンスを起動する

  OS : Amazon Linux

  インスタンスタイプ : m4.large (以上くらいは必要)

  • Spark(2.1.2) をダウンロードする

  Downloads | Apache Spark

  • 適当なディレクトリで展開する
$ tar zxvf spark-2.1.2-bin-hadoop2.7.tgz
  • (あると楽) IPython をインストールする
$ sudo pip install ipython
  • (あると楽) PySpark 実行時に IPython が起動するようにする
$ export PYSPARK_DRIVER_PYTHON=ipython

起動!!

展開したディレクトリに移動し、

$ ./bin/pyspark

# ↓こんな感じの出力があれば OK
# 
# Welcome to
#       ____              __
#      / __/__  ___ _____/ /__
#     _\ \/ _ \/ _ `/ __/  '_/
#    /__ / .__/\_,_/_/ /_/\_\   version 2.1.2
#       /_/
# 
# Using Python version 2.7.12 (default, Nov  2 2017 19:20:38)
# SparkSession available as 'spark'.
# 
# In [1]: 

サンプルデータのロードと中身の確認

# JSON ファイルからデータフレームを生成する
df = spark.read.json('examples/src/main/resources/people.json')

# データフレームの中身を見る
df.show()

# ↓こんな感じの出力があれば OK
# 
# +----+-------+
# | age|   name|
# +----+-------+
# |null|Michael|
# |  30|   Andy|
# |  19| Justin|
# +----+-------+

おわりに

1年くらい前に Spark 使って遊んでたときは、環境構築でもっと苦しんだ記憶があったんですが、今は楽になったなと感じます。

今回はサンプルデータのロードまで終わらせましたが、次は自前のデータを読み込んで、集計処理を試したいと思います!

f:id:kaorr_mob:20171204143354j:plain

Spark 面白い。