WindowsでSpark(PySpark)環境をつくる

Windows10でPySparkを動かします。

JDKのインストール

SparkそのものはScalaで作られているのでJavaの環境が必要です。Java Deployment Kit のバージョン7以降をインストールしておきます。Oracleのサイトからインストールexeファイルをダウンロードして実行。

Java SE Development Kit 8 - Downloads

確認。

> java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

Pythonのインストール

PySparkを動かしたいので、Pythonもインストールしておきます。Ptyhon3系で動かす場合、バージョン3.4以降が必要とのことです。

インストールして確認。

> python --version
Python 3.6.4

Sparkのモジュールを配置

Sparkのサイトからモジュールをダウンロードしてきます。tgzファイルなっているので、解凍して適当なフォルダに配置。今回は C:\tools\ 配下に、 C:\tools\spark-2.3.1-bin-hadoop2.7 と置いています。

続いて環境変数の設定。管理者権限から起動したコマンドプロンプトより実行。

> setx SPARK_HOME C:\tools\spark-2.3.1-bin-hadoop2.7
> setx /M PATH "%PATH%;%SPARK_HOME%\bin" 

winutils.exeを配置

Spark内部ではHadoopAPIを利用しているとのことで、Windowsで利用できるHadoopバイナリであるwinutilsを持ってきます。今回はHadoopバージョン2.7.1のものをダウンロード。

winutils/winutils.exe at master · steveloughran/winutils · GitHub

ダウンロードしてきたものを、Sparkのbinフォルダである C:\tools\spark-2.3.1-bin-hadoop2.7\bin に配置して、環境変数を設定。

> setx HADOOP_HOME C:\tools\spark-2.3.1-bin-hadoop2.7

spark-shellの起動

環境変数を設定しているので、OSの再起動をしておきます。

OS起動後、コマンドプロンプトから、spark-shellが起動するかどうか確認。

> spark-shell
2018-06-27 02:18:56 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://MyComputer:4040
Spark context available as 'sc' (master = local[*], app id = local-1530033544541).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.3.1
      /_/

Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_171)
Type in expressions to have them evaluated.
Type :help for more information.

scala>

pysparkの起動

pysparkが起動するかどうか確認

> pyspark
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
2018-06-27 02:23:46 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.3.1
      /_/

Using Python version 3.6.4 (v3.6.4:d48eceb, Dec 19 2017 06:04:45)
SparkSession available as 'spark'.
>>>

これでpysparkのプログラムを動かせます。