목록Big Data/Engineering (21)
핀아의 저장소 ( •̀ ω •́ )✧

✅ DataFrame은 관계형 데이터 한마디로 관계형 데이터셋: RDD + Relation RDD가 함수형 API를 가졌다면 DataFrame은 선언형 API 자동으로 최적화가 가능 타입이 없다 -> DataFrame은 내부적으로 타입을 강제하지 않는다. ✅ DataFrame의 특징 DataFrame: RDD의 확장판 지연 실행 (Lazy Execution) 분산 저장 Immutable 열 (Row) 객체가 있다 SQL 쿼리를 실행할 수 있다 스키마를 가질 수 있고 이를 통해 성능을 더욱 최적화 할 수 있다. CSV, JSON, Hive 등으로 읽어오거나 변환이 가능하다. ✅ DataFrame의 스키마를 확인하는 법 dtypes show() 테이블 형태로 데이터를 출력 첫 20개의 열만 보여준다 prin..

sparkSQL의 본격적인 사용 전, 기본적인 SQL 기초를 정리하고 간다. from pyspark.sql import SparkSession spark = SparkSession.builder.master("local").appName("learn-sql").getOrCreate() sparkSQL 사용시 local에 ‘learn-sql’이란 이름으로 spark session 생성 stocks = [ ('Google', 'GOOGL', 'USA', 2984, 'USD'), ('Netflix', 'NFLX', 'USA', 645, 'USD'), ('Amazon', 'AMZN', 'USA', 3518, 'USD'), ('Tesla', 'TSLA', 'USA', 1222, 'USD'), ('Tencent',..

1️⃣ SparkSQL ✅ 목적 스파크 프로그래밍 내부에서 관계형 처리를 하기 위해 스키마의 정보를 이용해 자동으로 최적화를 하기 위해 외부 데이터셋을 사용하기 쉽게 하기 위해 => 스파크를 좀 더 간결하고, 쉽게 쓰고, 최적화도 자동으로 되기 위해 ✅ 소개 스파크 위에 구현된 하나의 패키지 3개의 주요 API SQL DataFrame Datasets 2개의 백엔드 컴포넌트: 성능 최적화 Catalyst - 쿼리 최적화 엔진 Tungsten - 시리얼라이저, 용량을 최적화 2️⃣ DataFrame Spark Core에 RDD가 있다면 Spark SQL엔 DataFrame이 있다. DataFrame은 테이블 데이터셋이라고 보면 된다. 개념적으론 RDD에 스키마가 적용된 것으로 보면 된다. RDD에 적용된 ..

Unstructured Semi Structured Structured ✅ 데이터를 합치고 추출 하기 Q. 미국의 $2000불 이상의 주식만 가져올 때, 가능한 방법은???? # CASE 1: join 먼저, filter 나중에 tickerPrice = tickers.join(prices) tickerPrice.filter(lambda x: x[1][0][2] == "USA" and x[1][1][0] > 2000).collect() # CASE 2: filter 먼저, join 나중에 filteredTicker = tickers.filter(lambda x: x[1][2] == "USA") filteredPrice = prices.filter(lambda x: x[1][0] > 2000) filtere..

Shuffling 그룹핑시 데이터를 한 노드에서 다른 노드로 옮길 때 사용한다. 성능을 (많이) 저하시킨다. ✅ groupByKey를 할 때도 발생하는 Shuffling key를 기준으로 연산을 하며, 데이터가 이리저리 섞이기 때문에 통신을 많이 하게 된다. 여러 네트워크 연산을 일으키기 때문에 연산 코스트가 큰 연산이다. ✅ 통신 속도 ✅ Shuffle을 일으킬 수 있는 작업들 Join, leftOuterJoin, rightOuterJoin GroupByKey ReduceByKey ComebineByKey Distinct Intersection Repartition Coalesce → 위의 함수들이 결과로 나온 RDD를 원본 RDD의 다른 요소를 참조하거나, 다른 RDD를 참조하여 Shuffle을 일으..

Key-Value RDD에 적용할 수 있는 Transformation & Actions ✅ Transformation groupByKey reduceByKey mapValues keys join (+ leftOuterJoin, rightOuterJoin) ✅ Actions countByKey 1️⃣ groupByKey groupBy를 하게되면 rdd 내의 값이 주어지는 함수를 기준으로 그룹핑이 되어 나눠진다. groupByKey를 하면 무엇을 기준으로 할지(키를 기준으로 그룹핑함) 명확해서 함수를 따로 넣어주지 않아도 된다. [groupBy 예제] [groupByKey 예제] groupByKey() 매개변수를 넣어주면 파티션 개수를 정할 수 있다. 2️⃣ reduceByKey 개념적으로는 groupByK..