시스템 북에서 S3에 연결

3745 단어 DockerPyspark

PySpark + Jupter Notebook으로 S3 데이터를 읽고 싶습니다


PySpark, 즐거웠어요.
AWS 글루 등에서 ETL 처리를 시작할 때도 PySpark를 사용할 수 있어 누군가 사용하고 있을 수 있다.다만, 디버깅은 매우 힘들다.이럴 때는 로컬 PySpark+Jupyter Notebook을 사용합니다.코드의 기술, 실행을 상호작용적으로 할 수 있고 디버깅도 간단하다.
PySpark+Jupyther Notebook은 Docker로 이동하는 것이 힘들지 않고 편리합니다.
$ docker run -p 8888:8888 -v $HOME/pyspark-notebook:/home/jovyan/work jupyter/pyspark-notebook start-notebook.sh

이렇게 움직여.
다만 이렇게 되면 AWS3의 데이터를 읽고 쓸 수 없습니다.

대응 방법


Jupter 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 데이터를 읽을 수 있습니다!
사실 이 문서에는 자신이 찾을 수 없어 Qita에 적었다고 기술돼 있다.
https://github.com/jupyter/docker-stacks/blob/master/docs/using/recipes.md#using-pyspark-with-aws-s3
기타쓸 때 편한 것들을 많이 썼으니 읽어보는 게 좋을 것 같아요.

좋은 웹페이지 즐겨찾기