Spark를다루다보면다음과같은세가지API를접하게됩니다。DataFrame, Dataset그리고RDD의세가지입니다。

Rdd란무엇입니까?

抽样,즉弹性分布式数据集란분산형컴퓨팅을포함한레코드컬렉션으로본질적으로내결함성이있고변경불가능합니다。저수준API와병력방식으로운영할수있는데,이경우지연기능때문에火花작업이빠른속도로수행됩니다。Rdd가지원하는작업유형은두가지입니다。

  • 변환(转换)——또다른抽样를반환하는지연실행(懒惰操作)으로,이抽样는여기에서작업을수행하지않는이상연산을수행하지않습니다。변환의예로는map(), flatmap(), filter()등이있습니다。Spark api: RDD변환
  • 작업(动作)-계산을트리거하고값을반환하는작업입니다。작업의예로는count, top(), savetofile()등이있습니다。Spark api: RDD작업

Rdd의단점

Rdd를다루기로선택했다면,모든Rdd를각각최적화해야합니다。또한抽样数据集는나DataFrame과는달리수집된데이터의스키마를추론하지않으므로사용자가지정해야합니다。

DataFrame이란무엇입니까?

数据帧은이름이명명된열아래에속하는행의분산형컬렉션입니다。간단히말하면,열헤더를포함한Excel시트와같다고보면됩니다。아니면관계형데이터베이스의테이블이라든지,R이나Python에서는DataFrame과동급이라고생각하면됩니다。여기에는rdd와공통되는세가지특징이있습니다。

  • 본질적으로변경불가능:数据帧은사용자가생성할수는있지만변경할수는없습니다。DataFrame은변형할수없는RDD라고보면됩니다。
  • 평가가느림:작업(动作)을수행할때까지태스크를실행하지않습니다。
  • 분산형: DataFrame은본질적으로분산되어있다는점에서RDD와똑같습니다。

数据帧만드는법

Spark에서DataFrame을만들려면몇가지방법이있습니다。

  • 다양한데이터형식을사용합니다。예를들어,JSON, CSV, RDBMS, XML또는Parquet에서데이터로드
  • 기존rdd에서데이터로드
  • 프로그램방식으로스키마지정

数据帧의단점

DataFrame API의주된단점은컴파일링시간을안전하게지원하지않는다는점입니다。따라서데이터구조를모르는경우사용자에게한계가생깁니다。

数据集란무엇입니까?

数据集는강력한형식(强类型),변경불가능한개체컬렉션으로이는관계형스키마에매핑됩니다。数据集는JVM개체를사용하여만들고복잡한기능적인변환을사용해조작할수있습니다。数据集를만드는방법은두가지입니다。

  • 동적으로
  • SparkSession을사용해JSON파일에서읽어서。

数据集의단점

数据集의주된단점은문자열로타입캐스트(铸字)해야한다는점입니다。

额外的资源

回到术语表