[Spark] Ubuntu 컨테이너에서 PySpark로 Amazon S3 데이터 읽어오기
2024. 2. 2. 19:00ㆍData Engineering/Apache Spark
지난 글과 이어집니다
Airflow DAG로 Amazon S3에 파일 업로드하기 (+📚 알라딘 Open API 예제)
Airflow DAG를 사용해 파일을 Amazon s3에 업로드해보자. 💁♂️ Docker로 Apache Airflow 설치하는 방법은 아래 글 참고 Docker로 Apache Airflow 설치하기 (with 공식 문서🧐)데이터 파이프라인의 자동화를 구
donghae0230.tistory.com
Spark
v3.3.4
JAR 다운로드
S3A와의 연동을 위한 aws-java-sdk-bundle 및 hadoop-aws JAR 파일 다운로드
wget wget https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/1.11.1026/aws-java-sdk-bundle-1.11.1026.jar
wget https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/3.3.2/hadoop-aws-3.3.2.jar
✔ (주의) 설치된 Hadoop 및 Spark 버전과 호환되는 버전의 파일 다운로드 (Maven Repository 확인)
*S3A: S3의 데이터를 읽고 쓰기 위해 Hadoop에서 제공하는 파일 시스템 인터페이스. Hadoop의 다양한 서브 프로젝트(예) Apache Spark 등)에서 AWS S3와 상호작용 할 수 있도록 한다.
Spark Config 설정
파일 시스템 지정 및 AWS 계정의 Access Key와 Secret Key 설정
# $SPARK_HOME/conf/spark-defaults.conf
spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
spark.hadoop.fs.s3a.access.key=[ACCESS_KEY]
spark.hadoop.fs.s3a.secret.key=[SECRET_KEY]
Jupyter Notebook 실행
jupyter notebook --ip='0.0.0.0' --port=8888
AWS Region 설정
from pyspark.sql import SparkSession
from pyspark import SparkConf, SparkContext
conf = SparkConf()
conf.set("spark.hadoop.fs.s3a.endpoint", "s3.ap-northeast-2.amazonaws.com")
# conf 확인
# spark.sparkContext.getConf().getAll()
SparkConf 객체를 생성하고 S3A 파일 시스템의 엔드포인트를 AWS 서울 리전("s3.ap-northeast-2.amazonaws.com")으로 설정
Spark Session 설정
spark = SparkSession.builder \
.config(conf=conf) \
.appName("spark_test") \
.getOrCreate()
Amazon S3 데이터 읽기
S3에 parquet 형식으로 저장된 데이터 읽기
df = spark.read.format('parquet').load('s3a://aladin-books-bucket/raw/books.parquet')
✔ 데이터 확인
df['title', 'author'].limit(5).show()
'Data Engineering > Apache Spark' 카테고리의 다른 글
[Spark] Apache Spark의 Hint에 대해서 알아보자 (Partitioning Hint 편) 🙋♂️ (0) | 2024.03.18 |
---|---|
[Spark] Apache Spark에 대해 알아보자 🙋♂️ (0) | 2024.03.15 |
[Spark] Apache Spark의 Execution Plan에 대해 알아보자 🙋♂️ (0) | 2023.11.10 |
[Spark] Docker Ubuntu 컨테이너에 Apache Spark를 설치해보자 (0) | 2023.09.06 |