본문 바로가기
빅데이터/spark

[spark] RDD, DataFrame, DataSet

by hs_seo 2018. 3. 28.

스파크의 RDD, DataFrame, DataSet의 차이에 대해서

RDD, DataFrame, DataSet

  • RDD
    • Spark 1.0에서 소개
    • Java, Scala의 객체를 처리 하는 방식으로 처리 가능
    • transformation 함수들을 제공하고 각 함수의 결과를 RDD로 생성
    • action 함수가 호출되어야 실제 동작

      rdd.filter(.age >21).map(.last).saveAsObjectFile("result.txt")


  • DataFrame
    • Spark 1.3에서 프로젝트 텅스텐의 일부로 소개
    • 데이터를 스키마 형태로 추상화 하여 처리
    • Catalyst 옵티마이저에 의해 효율적으로 처리

      df.filter("age > 21") df.filter(df.col("age").gt(21))


  • DataSet
    • 스파크 1.6에서 소개
    • OOP 스타일의 프로그래밍과 컴파일 시간의 타입체크를 지원하면서 Catalyst 옵티마이저를 지원
    • RDD와 DataFrame의 장점을 모두 지원

      val sc = new SparkContext(conf)
      val sqlContext = new SQLContext(sc)

      import sqlContext.implicits.
      val sampleData: Seq[ScalaPerson] = ScalaData.sampleData()
      val dataset = sqlContext.createDataset(sampleData)
      dataset.filter(.age < 21)

    • RDD코드와 비슷하지만 쿼리 플랜을 작성


반응형