SparkのDatasetsとDataFramesとその違い


SparkのDatasetsとDataFramesとその違い
A Dataset is a distributed collection of data. Dataset is a new interface added in Spark 1.6 that provides the benefits of RDDs (strong typing, ability to use powerful lambda functions) with the benefits of Spark SQL’s optimized execution engine. A Dataset can be constructed from JVM objects and then manipulated using functional transformations ( map , flatMap , filter , etc.). The Dataset API is available in Scala and Java. Python does not have the support for the Dataset API. But due to Python’s dynamic nature, many of the benefits of the Dataset API are already available (i.e. you can access the field of a row by name naturally row.columnName ). The case for R is similar.
Datasetsは分散型データセットです.DatasetはSpark 1.6に追加された新しいインタフェースで、RDDの利点(強力なタイプ、強力なlambda関数を使用する能力)とSpark SQL最適化実行エンジンの利点を提供します.データセットは、JVMオブジェクトから作成し、変換関数(map、flatMap、filterなど)を使用して操作できます.Datasets APIはScalaとJavaで利用可能です.PythonにはDataset APIのサポートはありません.しかし、Pythonの動的特性のため、Dataset APIの多くの利点が利用可能になりました(たとえば、行のフィールドrow.columnNameに名前で自然にアクセスできます).Rの場合は似ています.
A DataFrame is a Dataset organized into named columns. It is conceptually equivalent to a table in a relational database or a data frame in R/Python, but with richer optimizations under the hood. DataFrames can be constructed from a wide array of sources such as: structured data files, tables in Hive, external databases, or existing RDDs. The DataFrame API is available in Scala, Java, Python, and R. In Scala and Java, a DataFrame is represented by a Dataset of Row s. In the Scala API, DataFrame is simply a type alias of Dataset[Row] . While, in Java API, users need to use Dataset to represent a DataFrame .
DataFramesは、Datasetsを一列ずつカラム名で組み合わせた集合である.リレーショナル・データベースのテーブルまたはR/Pythonのdata frameと概念的に同等ですが、関連するコンピューティング・エンジンではより豊富な最適化が行われています.DataFrameは、構造化データファイル、Hiveのテーブル、外部データベース、または既存のRDDなど、さまざまなソースから構築できます.DataFrame APIはScala,Java,Python,Rで利用可能である.ScalaとJavaでは、DataFrameは行データセットで表されます.Scala APIでは、DataFrameDataset[Row]のタイプの別名にすぎない.Java APIでは、ユーザは、データセットDatasetを使用してDataFrameを表す必要がある.
参考文献:Spark SQL,DataFrames and Datasets Guide