Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
そろそろ使ってみませんか Apache Arrow 2019/12/07 Japan.R 2019 @yutannihilation
Slide 2
Slide 2 text
ドーモ!! ● Hiroaki Yutani (@yutannihilation) ● 某メッセージングアプリ会社で データサイエンティスト見習い ● 好きな言語:R、忍殺語 ● ggplot2のメンテナ
Slide 3
Slide 3 text
近況
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
Apache Arrowとは? ● オンメモリで大量のデータを扱うためのプ ラットフォームをつくるプロジェクト – オンメモリに適したデータフォーマット を定義 – そのフォーマットのデータを読み書きす るライブラリを様々な言語に提供
Slide 6
Slide 6 text
Apache Arrowがないとき... コピーと変換処理が発生しまくり! (https://arrow.apache.org/ の図)
Slide 7
Slide 7 text
Apache Arrowがあるとき!! 共有メモリ上で同じデータを見る (https://arrow.apache.org/ の図)
Slide 8
Slide 8 text
● ParquetやFeatherのデータを読み書き (arrowパッケージ) ● Sparkとの効率的なデータのやりとり (sparklyrパッケージ) RとApache Arrow
Slide 9
Slide 9 text
Apache Parquetとは? ● 列指向のデータフォーマット ● CSVと違って規格が決まっているので、 読み書きするソフトの挙動に左右されない (Apache Arrowを使えばなおさら安心!) ● デフォルトで圧縮が効いている → 他言語との重いデータ共有に便利
Slide 10
Slide 10 text
例: Parquet ● read_parquet()・write_parquet()で Parquetファイルを読み書きできる ● 指定した列だけを読むこともできる! (pushdown) → つまり、全部読むとメモリに乗らず エラーになっていたデータも読めるかも
Slide 11
Slide 11 text
Parquet/Featherの読み書きは data.table::fread()より速い!! (https://ursalabs.org/blog/2019-10-columnar-perf/ の図) data.table arrow(feather)
Slide 12
Slide 12 text
Python派の人との データ共有にも便利 (https://ursalabs.org/blog/2019-10-columnar-perf/ の図) pyarrow 速い...
Slide 13
Slide 13 text
Parquetファイルの読み書き dplyr::select()と同じ指定で列を絞り込み arrow::read_parquet("tmp.parquet") arrow::read_parquet("tmp.parquet", starts_with("Sepal")) arrow::write_parquet(iris, "tmp.parquet")
Slide 14
Slide 14 text
インストールがお手軽に ● CRANに上がったので、これだけでOK! install.packages("arrow")
Slide 15
Slide 15 text
Apache Sparkとは? ● ビッグデータの分散処理基盤・フレーム ワーク
Slide 16
Slide 16 text
R Spark sparklyr ①Sparkからデータを読み込み ②何らかの 処理 ③Sparkにデータを返す 例:Spark
Slide 17
Slide 17 text
R Spark sparklyr ①Sparkからデータを読み込み ②何らかの 処理 ③Sparkにデータを返す 例:Spark コピー と変換 ここが遅い
Slide 18
Slide 18 text
例:Spark ● 以前:一度データをディスクに書いてか らSparkとやりとりするので遅い ● 現在:Apache Arrowフォーマットで Sparkと直接やりとりできるようになった (SparkRは3.0からなのでまだ) ※コピーは発生する
Slide 19
Slide 19 text
例:Spark(sparklyr) (https://arrow.apache.org/blog/2019/01/25/r-spark-improvements/ の図) Spark → R R → Spark Apache Arrowあり
Slide 20
Slide 20 text
まとめ ● Apache Arrowを使うと、 – 巨大なデータを保存・共有するのに便利 (例:Parquet、Feather) – 他のシステムと効率的にデータのやり取 りができる(例:sparklyr) ● もうすぐ1.0なのでそろそろ使ってみよう!
Slide 21
Slide 21 text
今日話せなかったこと ● dplyrのバックエンドもあるっぽい ● Featherは新フォーマット(v2)があるら しい 気になる方は、12/11開催の Apache Arrow東京ミートアップで!