분류 전체보기 65

쿼리 계획

쿼리 계획이란?: 작성한 코드가 실제 클러스터에서 실행 가능한 저수준 연산으로 변환되는 핵심 과정으로 로지컬 플랜과 피지컬 플랜으로 이어지며, Catalyst Optimizer가 최적화를 담당분석 → 논리적 계획 → 물리적 계획 → 코드 생성의 단계를 거쳐 입력한 코드를 즉시 실행 않고 최적의 경로를 찾음분석 : 사용자가 작성한 SQL이나 DF 코드의 컬럼 이름, 테이블 이름 등이 실제 데이터와 일치하는지 카탈로그를 통해 확인Logical Planning : 무엇을 할 것인지 정의Unresolved Logical Plan : 쿼리문의 문법 등을 확인을 하는 것으로 쿼리를 parsing 한 후 처음으로 실행이상한 특수문자나 구문적 오류가 있으면 걸러짐.Catalog : 테이블에 대한 정보를 저장하는 메타 ..

spark submit와 spark api

Spark submit이란?: 내가 짠 코드를 Spark라는 엔진에 실어서 실행시키는 실행 버튼 명령어의 기본 구조spark-submit \ --class \ --master \ --deploy-mode \ --conf \ ... # 기타 옵션 \ [애플리케이션_인자]master : 스파크 작업을 어떤 환경의 자원을 빌려서 실행할 것인가Yarn : 하둡 사용시하둡 생태계에서 별도의 호스트 주소 없이 yarn이라고만 적으면 설정된 하둡 환경을 자동으로 찾음Standalone (spark://HOST:PORT) : 스파크 자체적으로 내장된 자원 관리 기능을 사용할 때 사용스파크 마스터 서버가 떠 있는 주소(HOST)와 포트(PORT)를 직접 지정해야 함. 다른 복잡한 시스템 없이 스파크..

DF과 SparkSQL 소개

Spark Dataframe 이란?: 기존의 pandas dataframe처럼 행과 열로 이루어진 테이블구조이지만, 내부적으로는 대용량 데이터를 여러 컴퓨터에 나누어 담아 빠르게 처리할 수 있는 분산 데이터 시스템 스파크 데이터프레임의 특징Schema Support컬럼에 대한 이름과 타입을 알기 때문에, 쉽게 접근하고 표현할 수 있음Lazy Evaluation데이터를 작업하기 전에 실현화하지 않음Distributed and Parallel Processing분산 시스템을 사용할 수 있게 함Optimization쿼리 실행 계획을 자동으로 최적화Integration추출 : DF - High level(structured) | RDD - low level(key-value pairs)사용 용이성 : DF - ..

Spark 기초(1)

RDD와 DF 차이점 짚고 넘어가기1. RDD- 탄력적 분산 데이터 세트로 스파크의 가장 기본적인 추상화 개념탄력적 : 데이터 처리 중 노드에 장애가 발생해도 리니지를 통해 데이터를 복구분산된 : 클러스터의 여러 노드에 데이터가 나누어져 저장데이터 세트 : 텍스트 파일, JSON, 객체 리스트 등의 다양한 형태의 데이터를 담을 수 있음- 특징데이터가 어떻게 처리되어야 하는지 개발자가 직접 제어데이터 내부에 구조에 대한 정보가 없음 → 스파크 입장에서는 그저 객체의 묶음컴파일 타임에 타입 체크가 가능하여 런타임 오류를 줄일 수 있음2. DF- RDD 위에 구축된 고수준의 추상화 모델로, 테이블과 유사스키마 기반 : 데이터가 어떤 컬럼으로 구성되어 있고, 각 타입이 무엇인지 정의Named Columns : ..

Apache Spark 설치(window), jupyter 접속

https://www.docker.com/ Docker: Accelerated Container Application DevelopmentDocker is a platform designed to help developers build, share, and run container applications. We handle the tedious setup, so you can focus on the code.www.docker.com1. window 기반의 노트북 - 저전력 노트북이 아니기 때문에 AMD64로 다운2. Docker Desktop 실행3. Mac은 터미널에서 윈도우는 윈도우 파워셀 접속4. 해당 경로에 새로운 파일 만든 다음 명령어 입력(파일명/위치는 자유, 명령어에 위치만 잘 입력하면 됨..