-
Koalas 란?Open Source/Koalas 2019. 12. 20. 16:58반응형
본 게시물은 Databricks의 Koalas 프레젠테이션 자료를 해석 정리 한 것 입니다. 학습 목적으로 정리된 게시물 입니다.
데이터 사이언티스트 (Data Scientist) 의 일반적인 배움의 순서
- 처음 학습 할 때 ( 온라인강좌(MOOC, ...) , 책, 대학 수업, ... ) -> pandas 로 배움
- 작은 데이터 셋을 분석 할 때 -> pandas 로 분석
- 큰 데이터 셋을 분석 할 때 -> spark의 Dataframe을 사용하여 분석
pandas 란?
- 2008 년에 Wes McKinney에 의해 개발
- python 에서 데이터 조작(mainpulation) 및 분석(analysis)에 표준이 되는 도구
- python data science ecosystem 에 깊게 사용되고 있음 (예, numpy, matplotlib)
- 아래와 같은 다양한 내용을 다룰 수 있다.
- 기본 통계 분석 (basic statistical analysis)
- 결측 데이터(missing data) 다루기
- 연속된 데이터(time series), 분류 데이터(categorical variables), 문자열(strings)
Apache Spark 란?
- 큰 데이터를 처리하기 위한 분석 엔진, (Streaming, ETL(추출, 변환, 적재), ML) 가능
- UC Berkeley 에서 Databrick 창립자에 의해 개발됨
- PySpark API 는 Python 을 위한 것, Scala, R, SQL 도 지원
Koalas 란?
- 2019년 4월 24일에 발표된 순수 Python Library
- Apache Spark 위에서 pandas API 를 제공하는 것이 목적
- 두 생태계를 친숙한 API 로 통합하는 것
- 적거나(small) 많은(large) 데이터를 다루는데 나뉘어지지 않고 사용 될 수 있음
pandas Dataframe vs Spark Dataframe
pandas Dataframe Spark Dataframe Column df['col'] df['col'] Mutability(가변성) Mutable(가변성의) Immutable(불변성의) Add a column df['c'] = df['a'] + df['b'] df.withColumn('c', df['a'] + df['b']) Rename columns df.columns = ['a', 'b'] df.select(df['c1'].alias('a'), df['c2'].alias('b')) Value count df['col'].value_counts() df.groupBy(df['col']).count().orderBy('count', ascending=False) example
- pandas
-
import pandas as pd df = pd.read_csv('test.csv') df.columns = ['x', 'y', 'z1'] df['x2'] = df.x * df.x
- spark
-
df = spark.read .option('inferSchema', 'true') .option('comment', True) .csv('test.csv') df = df.toDF('x', 'y', 'z1') df = df.withColumn('x2', df.x * df.x)
- koalas
-
import databricks.koalas as ks df = ks.read_csv('test.csv') df.columns = ['x', 'y', 'z1'] df['x2'] = df.x * df.x
pandas 와 spark의 큰 차이점
- spark 는 본질적으로 lazy 하다.
- transformation (실행 계획 생성) 단계는 operation이 실행되지 않는다.
- action (show, collect, take, ...) 단계에서 operation 이 실행된다.
- spark는 row의 순서를 유지하지 않는다.
- 대규모 작업시 성능이 나온다.
References
반응형