🐷

Apache SparkのDatasetについて

2022/02/28に公開

Apache SparkでDataframe, Dataset, RDDの違いについて確認した。これらは、Sparkの中でデータを扱う際の分散コレクションである、中でも、Datasetについては理解できてなかった。もとい、知らなかった。

調べてみると、PySparkしか使ったことがなかったかららしい。

https://blog.serverworks.co.jp/introducing-pyspark-5

※ 雑談:RDDとDataFrame以外に、Datasetというオブジェクトも存在しますが、このブログシリーズでは省略します。実は、Spark 2.0になる際に、DataFrameとDatasetは統合されましたが、PySparkではDataFrameが使われています。理由としては表から読み取れる通り、Datasetは型チェックを行うオブジェクトとなりますが、Pythonには型を固定する概念がないため、使用されておりません。

https://dev.classmethod.jp/articles/hadoop-advent-calendar-17-spark-dataset/

Dataset APIは現在のところ、ScalaとJavaのみAPIを提供しています。 PythonとRに関しては言語の性質上Dataset APIによって得られるメリットのほとんどがDataFrameですでに達成しているという見解のようです(参考: 公式ドキュメント)
今回はScalaから利用したいと思います。

PySparkにはDatasetのAPIがない。

https://spark.apache.org/docs/latest/sql-programming-guide.html

当面PySparkしか使わないので気にしないでおこう。

参考

Discussion