Tambourine作業メモ

主にスキル習得のためにやった作業のメモ。他人には基本的に無用のものです。

Apache Spark で遊びたい(3)

DatasetのAPIドキュメントは、

> https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.Dataset

にあると書いている。次に進む前にちょっと眺めてみる。

説明書きに書いてあることをまとめておく。

  • Dataset とは別にDataFrameというものもある。Datasetのuntyped viewだと書いてあるが、意味はよくわからない
  • Datasetの操作には、transformationとactionがある。Streamの中間操作と終端操作みたいなものだと思われる
  • Datasetはlazyである。まあ、そうでしょうな。actionが実行されたときに、Sparkのquery optimizerがどのように実行するか決める。RDBみたいに、explainも取れる(マジカ)。
  • domain-specific object は、Encoderを必要とする。ここでいうdomain-specific objectは、Dataset[T]型のTの部分のことで、domain-specificっていうところのドメインは、つまりは「業務上の」ぐらいの意味だと思われる。ドメインもいろんなコンテキストで使われる言葉でややこしい。Encoderは、そのTをSparkの内部表現に変換するものことらしい。その内部表現が知りたかったら、schema ってメソッドで取れる。

正直、しんどい。

メソッドの方は、Stream APIや、.NETのLINQのIEnumerable, RubyのEnumerableにあるようなものが並んでいるので安心。

目についたものをメモ

Action
describe
カラム名を渡すと、平均や最大、最小などありがちな統計情報をまとめてくれる
Basic Dataset function
cache, persist
永続化してくれる。メモリかディスクかは設定による
checkpoint
バージョン付けて一時保存して、あとで指定したバージョンに戻してくれる。
hint
今のデータセットにコメントをつける
Typed transformations
alias, as
コピーをつくる
sample
ランダムなサンプリングをする