s4na's blog

s4naのテックブログ

ファーストペンギン

Apache Arrow東京ミートアップ2019参加時のメモ、走り書き

まえがき

銀座RailsRubyコミッターのMurataさんが登壇された際、「Apache Arrowがすごい!近日1.0.0のリリースをするので、それに向けてイベントがある。ぜひ参加してほしい!」と話をされていたので、面白そうなので参加してみました。

素晴らしいイベントに会場を提供してくださったSpeeeさんありがとうございます!!

イベントの内容

  • 今日のイベントについて

  • 発表:Apache Arrowの最新情報 須藤功平さん

  • 発表:Apache Arrowの最新情報 村田賢太さん
    • https://speakerdeck.com/yutannihilation/r-and-apache-arrow
    • Apache Arrow
      • データ処理の効率化
        • 効率的の定義
          • 速度
            • 遅いところを早くすると早くなる
            • 高速化できるところを最適化
          • 実装コスト
        • データ交換処理
        • 交換速度を早くする方法
          • 何もしない
            • 何もしないためのデータフォーマットを定義している
              • メモリ上のフォーマット
                • メモリ上のフォーマットをそのまま渡すから、シリアライズが発生しない
        • モリーマップ機能
        • 大量データの計算の高速化
          • 想定ユースケース
            • OLAP
            • 列単位の処理が多い
          • SIMD
            • データをまとめてアライン
          • 競合リソースを作らない
            • アプローチ
              • リソースを参照にする
          • データをストリームで処理
          • フォーマットの変換
            • CSVとかをArrow形式にする必要がある
              • 読み込んで吐き出す処理を追加している最中
      • データ交換用であれば、既にだいたいの言語で使える
      • データの高速な計算は一部の言語のみ
        • 実装される順番はC++ベースが一番早い
  • 発表:Apache Arrow Datasets C++ 須藤功平さん
  • RとApache Arrow 湯谷啓明さん
    • ggplot2のメンテナ
    • Rユーザーの悩み
      • 他のシステムからデータを取ってくるのが大変(Spark, DB)
        • Java関連のセットアップが難しい
        • コピー・変換が遅い
      • 他のデータ分析者とデータを共有するのが大変
        • CSVで表現できないデータ型、パース方法の差異
        • メモリに乗り切らない巨大なデータ
    • Rユースケース
      • Spark
        • RとSparkとの変換が遅いので、それにApache Arrowを使いたい
        • Sparkと直接やりとりできるから早い
      • Parquet, Feather
        • メモリに乗らなかったデータの読み書きができる
        • data.table::fread()より早い
          • めちゃめちゃ早いで有名なデータテーブル形式(?)
      • dplyrのバックエンド
  • Apache ArrowでRの開発が進んでいる理由
  • 発表:PostgreSQLApache Arrowの利用事 海外浩平さん
    • https://www.slideshare.net/kaigai/20191211apachearrowmeetuptokyo
    • 所属: HeteroDB
    • PG-Strom
      • 大量のデータを処理
    • 工場20TB * 5年
      • 2Uサーバーなら192TB入る
        • 6万ドル
          • この金額ならいけそうだと感じたのでやってみた
    • GPUでIOを高速化
      • 集計処理でフィルタリングするデータもメモリに読み込んでいる
        • ゴミを運ぶためにIOを使っていると言える
      • IOの方法を変える
        • PCIeからSSDのデータをGPUに読み出した結果をメモリで処理すれば早くなる
          • 👆聞き取れてるか怪しい文章
    • Arrow_Fdw 効率的な列データストア
      • Postgresのデータは効率的ではない
        • 背景
          • データの生成
            • データを作成してデータベースに入れる処理が辛い
          • データ構造に無駄が多い
            • 空のブロックがあったりする
        • Apache Arrow
          • FDW
            • CSVのデータソースをテーブルであるかのように取り扱う機能がある
          • SSD-to-GPU Direct SQL
            • 被参照列だけを転送する
    • マルチGPU + SSD-to-GPU Direct SQL, Arrow_Flow, マルチGPU処理の全てを投入
      • レコードベースで見ると
        • 毎秒10億レコード🎉🎉🎉
  • 発表:Apache SparkとApache Arrowの連携 Takeshi Yamamuroさん
    • 所属: NTTのR&D部門
    • Spark
    • 今日のユースケース
      • Pandasの処理を分散処理したい場合
    • 4~100倍早くなる
    • Spark + Arrow Internal
  • 発表:TensorFlowとApache Arrowの連携 石崎一明
  • 発表:TensorFlowとBigQuery Storage APIApache Arrowの連携評価事例 漆山和樹さん
  • 個人的に

あとがき

走り書きなので、誤字脱字などあるかとは思いますが、見つけた際はご連絡いただけるとありがたいです。