ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    반응형

    댓글

Designed by Tistory.