LoginSignup
5
5

More than 5 years have passed since last update.

jupyter/pyspark-notebookからS3に接続する

Last updated at Posted at 2018-12-20

S3のデータをPySpark + Jupter Notebookで読み込みたいんだ

PySpark、楽しいですね。
AWS GlueなどでETL処理を動かす際にもPySparkが使えるので、使っている方もいるかもしれません。ただ、デバッグはしんどいです。そんなときに使うのがローカルでのPySpark + Jupyter Notebook。インタラクティブにコードの記述・実行を行うことができてデバッグも簡単。

PySpark + Jupyter NotebookはDockerで動かすのが手間がなく便利です。

$ docker run -p 8888:8888 -v $HOME/pyspark-notebook:/home/jovyan/work jupyter/pyspark-notebook start-notebook.sh

SS_ 2018-12-20 12.10.40.png

こんな感じで動きます。

ただこのままではAWS S3にあるデータを読み書きできません。

対応方法

Jupyter Notebookのセルにおもむろに貼り付けましょう。

import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.amazonaws:aws-java-sdk:1.10.34,org.apache.hadoop:hadoop-aws:2.6.0 pyspark-shell'

import pyspark
sc = pyspark.SparkContext("local[*]")

from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)

hadoopConf = sc._jsc.hadoopConfiguration()
myAccessKey = input() 
mySecretKey = input()
hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
hadoopConf.set("fs.s3.awsAccessKeyId", myAccessKey)
hadoopConf.set("fs.s3.awsSecretAccessKey", mySecretKey)

df = sqlContext.read.parquet("s3://myBucket/myKey")

S3のデータを読み込むことができました!

実はこのドキュメントに記述されていたのですが、自分は上手く見つけられなかったのでQiitaに書いときます。
https://github.com/jupyter/docker-stacks/blob/master/docs/using/recipes.md#using-pyspark-with-aws-s3

他にもjupyter/pyspark-notebook使用時に便利なことが色々書いてあるので読んでみるといいかと。

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5