Spark DataFrame 기본 동작

DataFrame 의 개념 은 R/Pandas 언어 에서 나 왔 지만 R/Pandasruns on One Machine 에 불과 하고 DataFrame 분포 식 이 며 인터페이스 가 간단 하고 사용 하기 쉽다.
  • Threshold: Spark RDD API VS MapReduce API
  • One Machine:R/Pandas

  • 홈 페이지 설명http://spark.apache.org/docs/2.1.0/sql-programming-guide.html#datasets- and - dataframes 는 다음 과 같 습 니 다.
  • A Dataset is a distributed collection of data: 분포 식 데이터 세트
  • A DataFrame is a Dataset organized into named columns. (RDD with Schema) 열 (열 명, 열의 유형, 열 값) 형식 으로 구 성 된 분포 식 데이터 세트 로 열 에 따라 서로 다른 이름
  • 을 부여 합 니 다.
  • An abstraction for selecting,filtering,aggregation and plotting structured data
  • It is conceptually equivalent to a table in a relational database or a data frame in R/Python
  • RDDDataFrame 의 비교:
  • RDD 운행 하기 시작 하면 속 도 는 집행 언어 에 따라 다르다.
  • java/scala  ==> jvm
    python ==> python runtime
    
  • DataFrame 운행 하기 시작 하면 실행 언어 가 다 르 지만 운행 속도 가 같다.
  • java/scala/python ==> Logic Plan
    

    홈 페이지 의 예 를 들 어 DataFrame 의 기본 조작 을 알 아 보 자.
    import org.apache.spark.sql.SparkSession
    
    /**
      * DataFrame API    
      */
    object DataFrameApp {
      def main(args: Array[String]): Unit = {
    
        val spark = SparkSession
          .builder()
          .appName("DataFrameApp")
          .master("local[2]")
          .getOrCreate();
    
        //  json       dataframe
        val peopleDF = spark.read.json("C:\\Users\\Administrator\\IdeaProjects\\SparkSQLProject\\spark-warehouse\\people.json");
        // Prints the schema to the console in a nice tree format.
        peopleDF.printSchema();
    
        //        20   
        peopleDF.show();
    
        //         : select name from table
        peopleDF.select("name").show();
    
        //           ,       : select name, age+10 as age2 from table
        peopleDF.select(peopleDF.col("name"), (peopleDF.col("age") + 10).as("age2")).show();
    
        //           : select * from table where age>19
        peopleDF.filter(peopleDF.col("age") > 19).show();
    
        //         ,         : select age,count(1) from table group by age
        peopleDF.groupBy("age").count().show();
    
     spark.stop();
      }
    }
    

    좋은 웹페이지 즐겨찾기