본문 바로가기

Data Engineering/Apache Spark

(5)
[Spark] Apache Spark의 Hint에 대해서 알아보자 (Partitioning Hint 편) 🙋‍♂️ 1. Spark의 Partition RDD나 Dataset를 구성하고 있는 최소 단위. 각 파티션은 클러스터의 여러 노드에 분산되어 저장될 수 있으며, 익스큐터에 의해 병렬로 처리된다. 너무 작은 파티션은 네트워크 오버헤드를 증가시키고 너무 큰 파티션은 작업 효율성에 문제가 있기 때문에 주의해야한다. Partition Key 란? 데이터를 파티션으로 분할하는 데 사용되는 열. 파티션 키를 지정할 때에는 고객 ID, 번호와 같이 카디널리티가 높은(중복도가 낮은) 값을 사용하지 않는 것이 좋다. 대신 데이터를 균일하게 나눌 수 있거나 필터 및 그룹화, 조인 작업에 주로 사용되는 값을 사용하는 것이 좋다. 2. Spark의 Hint Spark SQL이 특정한 방식으로 실행 계획을 만들도록 사용자가 제안하는 것..
[Spark] Apache Spark에 대해 알아보자 🙋‍♂️ 1. Apache Spark란 무엇인가? 스파크는 인메모리 기반의 통합 컴퓨팅 엔진이며 클러스터 환경에서 데이터를 병렬 처리하는 라이브러리 집합이다. 1) 인메모리 기반이기 때문에 처리 속도가 빠르고 2) 클러스터 환경을 통해 높은 성능, 고가용성, 확장성을 가진다. 3) 프로그래밍 언어로 R, 파이썬, 자바, 스칼라 등을 지원하고 3) 라이브러리인 SPARK SQL, MLIib, GraphX, Streaming 등을 제공한다. 사진에서와 같이 스파크는 통합이라는 관점을 중시하며 기능의 범위를 컴퓨팅 엔진으로 제한한다. 저장소 역할은 HDFS, AWS S3 등을 지원하며 서로 다른 저장소를 유사하게 볼 수 있도록 사용자 API를 제공한다. 2. Spark는 어떻게 등장했을까? 2000년대 초에는 발열, ..
[Spark] Ubuntu 컨테이너에서 PySpark로 Amazon S3 데이터 읽어오기 지난 글과 이어집니다 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..
[Spark] Apache Spark의 Execution Plan에 대해 알아보자 🙋‍♂️ Apache Spark 빅데이터 처리를 위한 통합 컴퓨팅 엔진이다. 하드 디스크가 아닌 RAM에 데이터를 보관하고 병렬로 처리하는 인메모리 기반 연산이 가능하다. 다양한 언어(파이썬, 자바, 스칼라,R, SQL)를 지원한다. 자세한 내용은 이 글에서 확인 💡 Spark의 실행 계획이란? Spark에서 SQL 쿼리, 데이터 프레임, 데이터 셋을 최적화해 처리하는 방식을 설명한다. Spark에서 최적화 프로그램의 이름은 Catalyst이며 아래 과정과 같이 나타낼 수 있다. 각 과정에서는 논리적 계획과 물리적 계획을 만들며 이는 마스터 노드(Driver)에서 생성한다. 1) Logical Plan 사용자가 작성한 쿼리를 논리적인 단계로 표현. ✔ Unresolved Logical Plan 쿼리 분석 과정에서..
[Spark] Docker Ubuntu 컨테이너에 Apache Spark를 설치해보자 우분투 설치 docker pull ubuntu docker images * 도커 이미지 삭제하기: docker rmi [IMAGE ID] 컨테이너 실행 docker run -itd --name spark ubuntu /bin/sh 컨테이너 실행 시 docker run -itd 옵션을 사용 -i (--interactive): 컨테이너의 표준입력(stdin) 활성화 (주로 -it 와 같이 사용) -t (--tty): TTY 모드 사용. 키보드를 통해 표준입력(stdin) 전달 (주로 -it 와 같이 사용) -d (--detach): 컨테이너를 백그라운드로 실행 docker exec 명령어 실행 docker exec -it spark /bin/bash * 재시작시 docker start [name] 사용 ex..