Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Apache Arrow 2019

354 views

Published on

Apache Arrow東京ミートアップ2019の資料です。

2019年12月時点のApache Arrowの最新情報を紹介します。

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Apache Arrow 2019

  1. 1. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 Apache Arrow 2019 #ArrowTokyo 須藤功平 株式会社クリアコード Apache Arrow東京ミートアップ2019 2019-12-11
  2. 2. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 Apache Arrowと私 2016-12-21に最初のコミット✓ 2017-05-10にコミッター✓ 2017-09-15にPMCメンバー✓ 2018-12-06現在コミット数3位(224人中)✓ 2019-12-09現在コミット数2位(348人中)✓
  3. 3. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 Apache Arrow 1.0.0がでるぞ! たぶん2020年1月か2月あたり✓ 使い始めるなら今! 普通のユーザー:リリースされたら試そう✓ 先進的なみなさん:リリースされたら本格使用!✓ ✓
  4. 4. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 今日の目的 Apache Arrow ユーザーを 増やす
  5. 5. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 今日のチャレンジ こんな人たちもフォローしてユーザーに! 使ってみたい!✓ でも、自分たちだけじゃ不安…✓
  6. 6. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 対策:みんなで力を合わせる! こんな布陣ならいけるかも!なら相談して! https://www.clear-code.com/contact/ クリアコード:技術提供(すごく詳しいよ!)✓ A社:データ提供(うちのデータでApache Arrowは効くかな?)✓ B社:インフラ提供(どんな構成が適切かな?)✓ C社:お金・人的リソース提供(知見を貯めたい)✓ ...✓
  7. 7. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 Apache Arrow 各種言語で使える インメモリー データ処理 プラットフォーム
  8. 8. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 実現すること データ処理の効率化 (大量データが対象)
  9. 9. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 効率化のポイント 速度 速いほど効率的✓ ✓ 実装コスト 低いほど効率的✓ ✓
  10. 10. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 速度向上方法 遅い部分を速く✓ 高速化できる部分を最適化✓
  11. 11. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 遅い部分 データ交換
  12. 12. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 データ交換 データ処理ツール間で必要✓ データ処理システム 複数ツールを組み合わせて実現✓ データ処理システムではデータ交換が必須✓ ✓
  13. 13. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 データ処理システム例 データ交換 データ収集 ツール データ前処理 ツール 分析 ツール 可視化 ツール
  14. 14. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 データ交換処理 シリアライズ データをバイト列へ変換 1. 転送 バイト列を別ツールに渡す 2. デシリアライズ バイト列からデータを復元 3.
  15. 15. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 データ交換処理:必要なリソース シリアライズ:CPU1. 転送:I/O(ネットワーク・ストレージ・メモリー)2. デシリアライズ:CPU3.
  16. 16. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 データ交換の高速化 データ量が増加すると シリアライズ・デシリアライズ速度が劣化 ✓ 速度劣化を抑えられれば高速化可能✓
  17. 17. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 Apache Arrowのアプローチ なにもしなければ最速! データフォーマットを定義 ほぼパースいらずなので速い!✓ シリアライズ・デシリアライズが高速化!✓ ✓ このフォーマットを普及 各種言語で読み書き処理を実装✓ みんなが使えばフォーマット変換いらずで速い!✓ ✓
  18. 18. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 Apache Sparkでの高速化事例 Spark⇔PySpark間でデータ交換 Apache Arrowを使うことで数十倍レベルの高速化✓ ✓ Spark⇔R間でデータ交換 sparklyrでは10倍以上の高速化✓ Spark 3.0からはSparkRでも使える✓ ✓ Spark関連は山室さんが紹介!
  19. 19. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 Apache Arrowのさらなるアプローチ シリアライズ データをバイト列へ変換 1. 転送←ここも高速化 バイト列を別ツールに渡す 2. デシリアライズ バイト列からデータを復元 3.
  20. 20. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 同一ホスト時のデータ転送の高速化 メモリーマップ機能 ファイルの内容をメモリー上のデータのように アクセスできる機能 ✓ readせずにデータを使える(データコピー不要)✓ ✓ パース不要+メモリーマップ デシリアライズ時にメモリー確保不要✓ 「転送」コスト削減✓ ✓
  21. 21. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 複数ホスト時のデータ転送の高速化 RPCフレームワークを提供 Apache Arrow Flight✓ gRPCベース✓ ✓ 詳細:Apache Arrow Flightの紹介✓
  22. 22. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 効率的なデータ交換処理のまとめ 高速なデータフォーマット✓ 効率的なデータ交換処理 同一ホスト内での高速なデータ交換✓ 異なるホスト間での高速なデータフレーム交換✓ ✓
  23. 23. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 速度向上方法 遅い部分を速く データ交換を速く✓ ✓ 高速化できる部分を最適化✓
  24. 24. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 高速化できる部分 大量データの計算
  25. 25. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 大量データの計算の高速化 各データの計算を高速化✓ まとまったデータの計算を高速化✓
  26. 26. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 各データの計算の高速化 データを局所化 CPUのキャッシュメモリーを活用できる✓ ✓ 局所化に必要な知識 データの使われ方✓ 局所化:一緒に使うデータを近くに置く✓ ✓
  27. 27. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 想定ユースケース OLAP(OnLine Analytical Processing) データから探索的に知見を探し出すような処理✓ ✓ 列単位の処理が多い 集計処理・グループ化・ソート…✓ ✓
  28. 28. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 OLAP向きのデータの持ち方 列行 a b c 1 2 3 値 値 値 値 値 値 値 値 値 列 行 a b c 1 2 3 値 値 値 値 値 値 値 値 値 Apache Arrow 列ごと RDBMS 列 行 値の管理単位 行ごと 高速なアクセス単位
  29. 29. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 まとまったデータの計算を高速化 SIMDを活用 Single Instruction Multiple Data ✓ スレッドを活用✓ ストリームで処理✓
  30. 30. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 SIMDを活用 CPU:データをまとめてアライン アライン:データの境界を64の倍数とかに揃える ✓ GPUの活用✓ 条件分岐をなくす null/NA用の値は用意せずビットマップで表現 Is it time to stop using sentinel values for null / NA values? ✓ ✓
  31. 31. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 条件分岐とnull null 0 1 0 data 1 X 3 1 0 0 X 2 5 +[1, null, 3] [null, 2, 5] 1 1 0 X X 8 [null, null, 8] ビット単位の| nullのところも 気にせずSIMDで+ null data
  32. 32. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 スレッド活用時のポイント 競合リソースを作らない リソースロックのオーバーヘッドで遅くなりがち✓ ✓ アプローチ リソースを参照するだけ✓ 各スレッドにコピー✓ ✓
  33. 33. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 Apache Arrowとスレッド データはリードオンリー スレッド間でオーバーヘッドなしで共有可能✓ ✓ データコピーは極力避けたい データ交換時もスレッド活用時も✓ ✓
  34. 34. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 ストリームで処理 CPUを遊ばせない データ読み込み中にすでに読んだデータを処理✓ ✓ C++実装:詳細は村田さんが紹介! Apache Arrow C++ Datasets:データ読み込み✓ Apache Arrow C++ Query Engine:データ処理✓ Apache Arrow C++ Data Frame:高レベルAPI✓ Gandiva:高速な式コンパイラー✓ ✓
  35. 35. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 高速化のまとめ 速度 遅い処理(データ交換処理)を高速化✓ 速くできる処理(大量データの計算)を最適化✓ ✓ 実装コスト 低いほど効率的✓ ✓
  36. 36. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 実装コストを下げる 共通で使いそうな機能をライブラリー化 メリットを受ける人たちみんなで協力して開発✓ 最適化もがんばる✓ ✓ Apache Arrowの実装コストは下がらない Apache Arrowを使うツールの実装コストが下がる 実装コストが下がる:ツール開発者のメリット ✓ ✓
  37. 37. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 共通で使いそうな機能 高速なデータフォーマット(説明済み)✓ 効率的なデータ交換処理(説明済み)✓ 高速なデータ処理ロジック(説明済み)✓ フォーマット変換機能✓
  38. 38. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 実装コストのまとめ 速度 遅い処理(データ交換処理)を高速化✓ 速くできる処理(大量データの計算)を最適化✓ ✓ 実装コスト 共通で使いそうな機能をライブラリー化✓ みんなで協力して開発✓ ✓
  39. 39. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 フォーマット変換機能 Apache Arrowフォーマット インメモリー用のフォーマット✓ データ交換・処理向きで永続化向きではない✓ ✓ 永続化されたデータを使う場合 永続化に適したフォーマットで保存✓ 読み込み時にApache Arrowに変換して インメモリーでの処理にApache Arrowを使う ✓ ✓
  40. 40. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 対応フォーマット:CSV よく使われているフォーマット✓ 亜種が多くてパースが大変✓ C++実装はすごく速い! CSV読み込みの高速化でも使える!✓ ✓
  41. 41. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 対応フォーマット:Apache Parquet 永続化用フォーマット 列単位でデータ保存:Apache Arrowと相性がよい✓ ✓ 小さい 列単位の圧縮をサポート✓ ✓ 速い 必要な部分のみ読み込める(I/Oが減る)✓ ✓
  42. 42. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 対応フォーマット:Apache ORC 永続化用フォーマット 列単位でデータ保存:Apache Arrowと相性がよい✓ Apache Parquetに似ている✓ ✓ Apache Hive用に開発 今はHadoopやSparkでも使える✓ ✓
  43. 43. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 対応フォーマット:Feather 永続化用フォーマット 列単位でデータ保存:Apache Arrowと相性がよい✓ データフレームを保存✓ ✓ PythonとR間のデータ交換用✓ 今は非推奨! Apache Arrowを使ってね✓ ✓
  44. 44. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 豆知識:Feather 2 名前を再利用するかも [ARROW-5512] Feather V2✓ ✓ Feather 2: Apche Arrow IPC File Format Apache Arrow IPC Format:FileまたはStreaming✓ Fileの方をFeather 2と呼んじゃう?✓ ✓
  45. 45. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 対応フォーマット:JSON よく使われているフォーマット✓ これまではテストのために内部使用✓ 正式機能になった✓
  46. 46. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 フォーマット変換機能まとめ 高速なデータフォーマット✓ 効率的なデータ交換処理✓ 高速なデータ処理ロジック✓ フォーマット変換機能 永続化データを処理するために必要✓ ✓
  47. 47. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 対応言語 C, C#, C++, Go, Java, JavaScript, Lua✓ MATLAB, Python, R, Ruby, Rust✓ 非公式実装: Julia (Arrow.jl)✓
  48. 48. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 実装方法 ネイティブ実装 C#, C++, Go, Java, JavaScript, Julia, Rust✓ その言語になじむ✓ ✓ C++バインディング C, Lua, MATLAB, Python, R, Ruby R関連は湯谷さんが紹介! ✓ ホスト言語が遅めでも速い実装になる✓ ✓
  49. 49. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 各言語のデータ交換対応状況 基本的な型はすべての言語で対応済み すでにデータ交換用途に使える✓ ✓ 複雑な型は未対応の言語あり List, Structなど 例:C#のList実装は網屋の橋田さんが改良中✓ ✓
  50. 50. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 各言語のデータ処理対応状況 データの高速な計算は一部言語で対応 C++ベース、Java、Rust(DataFusion)、Go✓ ✓ フォーマット変換も各言語の対応は様々✓
  51. 51. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 ユースケース(1) PostgreSQLの高速化 海外さんがPG-Stromの事例を紹介!✓ ✓ TensorFlow・BigQuery Storage APIが Apache Arrowをサポート 石崎さんと漆山さんが紹介!✓ ✓
  52. 52. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 ユースケース(2) FluentdでログデータをApache Arrow化 プラグインあり✓ ✓ Groongaに高速データロード Groonga:全文検索エンジン✓ Fluentdで集めたログデータを Apache Arrowで流し込んで高速検索 ✓ ✓
  53. 53. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 今日の目的 Apache Arrow ユーザーを 増やす
  54. 54. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 今日のチャレンジ こんな人たちもフォローしてユーザーに! 使ってみたい!✓ でも、自分たちだけじゃ不安…✓
  55. 55. Apache Arrow 2019#ArrowTokyo Powered by Rabbit 3.0.1 対策:みんなで力を合わせる! こんな布陣ならいけるかも!なら相談して! https://www.clear-code.com/contact/ クリアコード:技術提供(すごく詳しいよ!)✓ A社:データ提供(うちのデータでApache Arrowは効くかな?)✓ B社:インフラ提供(どんな構成が適切かな?)✓ C社:お金・人的リソース提供(知見を貯めたい)✓ ...✓

×