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内部ではHadoopのAPIを利用しているとのことで、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のプログラムを動かせます。