SlideShare a Scribd company logo
1 of 52
Download to read offline
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Apache Arrow
A cross-language development platform
for in-memory data
Kouhei Sutou
ClearCode Inc.
SciPy Japan Conference 2019
2019-04-23
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Me
Ruby committer
since 20042004年からRubyコミッター
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Why do I talk at SciPy?
なぜSciPyで話しているのか?
To introduce
Apache ArrowApache Arrowを紹介するため
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Apache Arrow
A cross-language development
platform for in-memory data
インメモリーデータ向け多言語対応開発プラットフォーム
[cited from `https://arrow.apache.org/']
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Cross-language
多言語対応
C, C++, C#, Go, Java,✓
JavaScript, MATLAB, Python,✓
R, Ruby and Rust✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Development platform
開発プラットフォーム
Apache Arrow ...
specifies standards and
標準化
✓
provides implementations
実装
✓
to advance cooperation by many people
多くの人が協力できるように
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
For in-memory data
インメモリーデータ
Apache Arrow focuses on ↓ for now
Apache Arrowは今のところは↓に注力
sharing columnar/tensor data
カラムナーデータ・テンソルデータの共有
✓
analyzing columnar data
カラムナーデータの分析
✓
RPC for columnar data
カラムナーデータのRPC
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Apache Arrow and Python
Apache ArrowとPython
As pickle replacement
pickleの代替
PySpark does
PySparkはすでにやっている
✓
✓
As dataframe library
データフレームライブラリー
pandas and Vaes use Apache Arrow a bit
pandasとVaesはApache Arrowを少し使っている
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Apache Arrow and me
Apache Arrowと私
A release manager(リリースマネージャー)
0.11.0 and 0.13.0 (the latest release/最新リリース)✓
✓
An active developer(アクティブな開発者)✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Feature (1)
機能(1)
Effective
serialization効率的なシリアライズ
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Why effective?
なぜ効率的なのか
Don't parse data
データをパースしないから
✓
Use data directly
データをそのまま使うから
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Data format: Number
データフォーマット:数値
Contiguous data (Same as C array)
連続データ(Cの配列と同じ)
32bit integer: [1, 2, 3]
0x01 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x03 ...
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Compare to JSON
JSONと比較
    "[1, 2, 3]"
↓
"1" → 1 (String → Number)
"2" → 2 (String → Number)
"3" → 3 (String → Number)
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Merit of direct data use
データを直接使うことのメリット
Zero copy cost
コピーコストをなくせる
Copy is costly for large data
大きなデータではコピーはコストが高い
✓
✓
(Nearly) zero parse cost
(ほぼ)パースコストをなくせる
Only need to parse metadata
メタデータをパースするだけでよい
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Performance
性能
Fast Python Serialization with Ray and Apache Arrow
Apache License 2.0: (c) 2016-2019 The Apache Software Foundation
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Zero copy and large data
ゼロコピーと大きなデータ
pandas can't process large data
pandasは大きなデータを扱えない
Because it needs to allocate memory
メモリーを確保する必要があるから
✓
✓
Apache Arrow supports memory mapping
Apache Arrowはメモリーマッピング対応
Can use data in file directly without copy
ファイル内のデータをコピーせずに使える
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Effective string representation
効率的な文字列表現
pandas: Array of strings
pandas:文字列の配列
Use discontiguous memory
非連続なメモリーを使う
✓
✓
Apache Arrow: Data and array of lengths
Apache Arrow:データと長さの配列
Use contiguous memory: Fast
連続したメモリーを使う:速い
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Data format: String
データフォーマット:文字列
Data bytes + length array
UTT-8 string: ["Hello", "", "!"]
Data bytes: "Hello!"
Length array: [0, 5, 5, 6]
i-th length: lengths[i+1] - lengths[i]
i-th data: data[lengths[i]:lengths[i+1]]
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Feature(?) (2)
機能(?)(2)
Specify data formatデータフォーマットを仕様化
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Why do Arrow specify?
なぜArrowは仕様化するのか
Effective
data exchange効率的なデータ交換のため
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Effective data exchange
効率的なデータ交換
Use common format widely
みんなが同じフォーマットを使うこと
No format conversion reduces resource usage
フォーマットを変換しなくてよいならリソース使用量を減らせる
✓
✓
Use low {,de}serialize cost format
シリアライズコストが低いフォーマットを使うこと
Fast✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Who uses Arrow format?
Arrowフォーマットをだれが使っているか
RAPIDS: For NVIDIA GPU✓
Fletcher, InAccel: For FPGA✓
Spark: For interprocess data exchange
Spark:プロセス間のデータ交換のために
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
CPU and GPU
Can't share data on memory
メモリー上のデータを共有できない
✓
Need to copy between CPU and GPU
CPUとGPU間でコピーする必要がある
Effective data exchange improves performance
データ交換を効率化することで高速化
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
CPU and FPGA
Can't share data on memory
メモリー上のデータを共有できない
✓
Need to copy between CPU and FPGA
CPUとFPGA間でコピーする必要がある
Effective data exchange improves performance
データ交換を効率化することで高速化
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Spark
Process large data
大きなデータを処理
✓
Need to pass data to worker processes
ワーカープロセスにデータを渡す必要がある
Effective data exchange improves performance
データ交換を効率化することで高速化
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
PySpark
Worker by Python
ワーカーはPython
Use pikcle to exchange data
データ交換にpickleを使用
✓
✓
Spark supports Arrow for data exchange
Arrowを使ったデータ交換をサポート
Disabled by default
デフォルトでは無効
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
PySpark with Arrow
In [2]: %time pdf = df.toPandas()
CPU times: user 17.4 s, sys: 792 ms, total: 18.1 s
Wall time: 20.7 s
In [3]: spark.conf.set("spark.sql.execution.arrow.enabled", "true")
In [4]: %time pdf = df.toPandas()
CPU times: user 40 ms, sys: 32 ms, total: 72 ms
Wall time: 737 ms
Speeding up PySpark with Apache Arrow
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Feature (3)
機能(3)
Optimized
data processing
modules最適化されたデータ処理モジュール
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Optimized data processing
最適化されたデータ処理モジュール
Apache Arrow targets large data
Apache Arrowは大きなデータを対象にしている
Performance is important
性能は重要
✓
✓
How to get high performance...?
どうすれば速くできる。。。?
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
High performance (1)
高速化(1)
Data localityデータを局所化
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Data locality
データを局所化
Minimize cache misses
キャッシュミスを減らす
✓
Storage is very slow
ストレージはすごく遅い
✓
Memory is slow
メモリーは遅い
✓
CPU cache is fast
CPUキャッシュは速い
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
High performance (2)
高速化(2)
SIMDSingle Instruction Multi Data
一気に複数のデータを処理する方法
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
SIMD
Data must be contiguous and aligned
データは連続していてアラインされていないといけない
Arrow format is SIMD ready
ArrowフォーマットはSIMDを使える
✓
✓
No condition branch
条件分岐がないこと
Use bitmap instead of "missing" for null
nullを表現するために「欠損値」ではなく別途ビットマップを使う
Is it time to stop using sentinel values for null / NA values?
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
No condition branch
条件分岐なし
null 1 0 1
data 1 X 3
0 1 1
X 2 5
+[1, null, 3] [null, 2, 5]
0 0 1
X X 8
[null, null, 8]
bitwise & + by SIMD
including null
elementsnull
data
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
FYI: null
参考情報:null
All data types support null in Arrow
Arrowはすべての型でnullをサポート
✓
Some types only support null in NumPy
NumPyは一部の型でnullをサポート
欠損値の制約 - PythonとApache Arrow
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
High performance (3)
高速化(3)
Thread
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Thread
Use multi-cores in single process
シングルプロセスで複数コアを使う
✓
Minimize resource conflict
リソースの競合をなくすこと
Locking to avoid conflict reduces performance
競合を避けるためにロックすると性能劣化
✓
✓
Approaches(アプローチ)
Read only or copy (shared nothing)
リードオンリーにするかコピー(なにも共有しない)
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Apache Arrow and thread
Apache Arrowとスレッド
Data is read only
データはリードオンリー
Share data in threads without lock overhead
ロックのオーバーヘッドなしでスレッド間でデータを共有
✓
✓
Avoid both locking and copying
ロックもコピーも避ける
They reduce performance
どちらも性能劣化するから
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
High performance (4)
高速化(4)
Compute kernels計算カーネル
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Compute kernels
計算カーネル
SIMD ready primitive operations
SIMDを使ったプリミティブな演算
✓
Projection, Filter, Aggregation, ...
射影とかフィルターとか集計とかとか
compare, take, mean, ...
比較とか行選択とか平均とか
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
High performance (5)
高速化(5)
Subgraph compilerサブグラフコンパイラー
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Subgraph compiler: Gandiva
サブグラフコンパイラー:Gandiva
Compile operator graphs at run-time
実行時に演算グラフをコンパイル
Operator graph: combined multiple operations
演算グラフ:演算のまとまり
✓
table.a + table.b < table.c && ...✓
✓
Usable for query engine backend
クエリーエンジンのバックエンドとして使える
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
High performance (6)
高速化(6)
Query engineクエリーエンジン
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Query engine
クエリーエンジン
For single node
シングルノード向け
✓
Dataflow-style operator execution
データが流れるように演算を実行
scan → project → filter → aggregate → ...
データ取得→射影→フィルター→集計→…
✓
✓
Apache Arrow Query Engine for C++
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Query engine from Python
Pythonからクエリーエンジンを使う
With pandas(pandasと使う)
Large data → execute → to_pandas()
大きなデータ→実行→to_pandas()
✓
✓
With Dask(Daskと使う)
Dask will be able to use this as backend
Daskのバックエンドで使えるかも?
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
High performance (7)
高速化(7)
Datasetsデータセット
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Datasets
データセット
Scan data from storage/database
ストレージ・データベースからデータ取得
File systems: local, HDFS, ...✓
Formats: CSV, Parquet, ...✓
Databases: MySQL, PostgreSQL, ...✓
✓
Apache Arrow C++ Datasets
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Fast datasets
高速なデータセット
Predicate pushdown
条件のプッシュダウン
Scan only needed data
必要なデータのみ取得
✓
✓
Parallel scan
並列取得
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Feature (4)
機能(4)
RPC
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
RPC: Arrow Flight
Fast RPC framework for Arrow
Arrow用の高速なRPC
✓
Based on gRPC with low-level extensions
gRPCベースでいくつか低レベルの拡張をしている
✓
Apache 0.11.0 Release
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Wrap up
まとめ
Arrow is useful for SciPy community
SciPyコミュニティーにArrowは有用
in not only Python but also other languages
Pythonだけでなく他の言語でも有用
✓
✓
Join Apache Arrow development!
Apache Arrowの開発に参加しよう!
Ask me how to start
なにから始めればよいかは私に相談してね
✓
✓
Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0
Next step
次の一歩
Mailing list: dev@arrow.apache.org✓
Chat in Japanese:
https://gitter.im/apache-arrow-ja/community✓
✓
Apache Arrow Tokyo Meetup 2019 this summer?
See also: Apache Arrow Tokyo Meetup 2018✓
✓

More Related Content

What's hot

Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証BrainPad Inc.
 
Tez on EMRを試してみた
Tez on EMRを試してみたTez on EMRを試してみた
Tez on EMRを試してみたSatoshi Noto
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウSpark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウFuture Of Data Japan
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはKoji Shinkubo
 
Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたRecruit Technologies
 
AWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearchAWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearchAmazon Web Services Japan
 
20111215_第1回EMR勉強会発表資料
20111215_第1回EMR勉強会発表資料20111215_第1回EMR勉強会発表資料
20111215_第1回EMR勉強会発表資料Kotaro Tsukui
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Noritaka Sekiyama
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_TokyoKohei KaiGai
 
Amazon Athena で実現する データ分析の広がり
Amazon Athena で実現する データ分析の広がりAmazon Athena で実現する データ分析の広がり
Amazon Athena で実現する データ分析の広がりAmazon Web Services Japan
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返りSotaro Kimura
 
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Takeshi Mikami
 
Sparkストリーミング検証
Sparkストリーミング検証Sparkストリーミング検証
Sparkストリーミング検証BrainPad Inc.
 
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB Amazon Web Services Japan
 
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介Sotaro Kimura
 
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)Hadoop / Spark Conference Japan
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezGw Liu
 
Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Taro L. Saito
 

What's hot (20)

Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証
 
Tez on EMRを試してみた
Tez on EMRを試してみたTez on EMRを試してみた
Tez on EMRを試してみた
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance Tuning
 
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウSpark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
 
Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみた
 
AWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearchAWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearch
 
20111215_第1回EMR勉強会発表資料
20111215_第1回EMR勉強会発表資料20111215_第1回EMR勉強会発表資料
20111215_第1回EMR勉強会発表資料
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
 
Amazon Athena で実現する データ分析の広がり
Amazon Athena で実現する データ分析の広がりAmazon Athena で実現する データ分析の広がり
Amazon Athena で実現する データ分析の広がり
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
 
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
 
Sparkストリーミング検証
Sparkストリーミング検証Sparkストリーミング検証
Sparkストリーミング検証
 
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
 
hscj2019_ishizaki_public
hscj2019_ishizaki_publichscj2019_ishizaki_public
hscj2019_ishizaki_public
 
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
 
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on Tez
 
Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編
 

Similar to Apache Arrow - A cross-language development platform for in-memory data

SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門Daiyu Hatakeyama
 
AWSが誕生するまでの秘話
AWSが誕生するまでの秘話AWSが誕生するまでの秘話
AWSが誕生するまでの秘話Yasuhiro Horiuchi
 
VisualStudio2010ReadyDay Azureセッション資料
VisualStudio2010ReadyDay Azureセッション資料VisualStudio2010ReadyDay Azureセッション資料
VisualStudio2010ReadyDay Azureセッション資料Shinichiro Isago
 
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...Insight Technology, Inc.
 
20170803 bigdataevent
20170803 bigdataevent20170803 bigdataevent
20170803 bigdataeventMakoto Uehara
 
JAWS-UGお遍路_20230916.pdf
JAWS-UGお遍路_20230916.pdfJAWS-UGお遍路_20230916.pdf
JAWS-UGお遍路_20230916.pdfEkaterina704352
 
今からでも間に合う!インフラ自動化超入門 @渋谷
今からでも間に合う!インフラ自動化超入門 @渋谷今からでも間に合う!インフラ自動化超入門 @渋谷
今からでも間に合う!インフラ自動化超入門 @渋谷Daigou Harada
 
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
[C31]世界最速カラムナーDBは本物だ! by Daisuke HiramaInsight Technology, Inc.
 
Effective Data Lakes - ユースケースとデザインパターン
Effective Data Lakes - ユースケースとデザインパターンEffective Data Lakes - ユースケースとデザインパターン
Effective Data Lakes - ユースケースとデザインパターンNoritaka Sekiyama
 
RubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入りRubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入りKouhei Sutou
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStromKohei KaiGai
 
AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)Akio Katayama
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践Shumpei Shiraishi
 
平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、Databricksでもやってみましょうか平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、DatabricksでもやってみましょうかRyuichi Tokugami
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ真吾 吉田
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) hamaken
 
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceYAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceKazuho Oku
 
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアRubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアKouhei Sutou
 

Similar to Apache Arrow - A cross-language development platform for in-memory data (20)

SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
 
AWSが誕生するまでの秘話
AWSが誕生するまでの秘話AWSが誕生するまでの秘話
AWSが誕生するまでの秘話
 
VisualStudio2010ReadyDay Azureセッション資料
VisualStudio2010ReadyDay Azureセッション資料VisualStudio2010ReadyDay Azureセッション資料
VisualStudio2010ReadyDay Azureセッション資料
 
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
 
20170803 bigdataevent
20170803 bigdataevent20170803 bigdataevent
20170803 bigdataevent
 
JAWS-UGお遍路_20230916.pdf
JAWS-UGお遍路_20230916.pdfJAWS-UGお遍路_20230916.pdf
JAWS-UGお遍路_20230916.pdf
 
今からでも間に合う!インフラ自動化超入門 @渋谷
今からでも間に合う!インフラ自動化超入門 @渋谷今からでも間に合う!インフラ自動化超入門 @渋谷
今からでも間に合う!インフラ自動化超入門 @渋谷
 
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
 
Effective Data Lakes - ユースケースとデザインパターン
Effective Data Lakes - ユースケースとデザインパターンEffective Data Lakes - ユースケースとデザインパターン
Effective Data Lakes - ユースケースとデザインパターン
 
RubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入りRubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入り
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
 
Apache Spark on Azure
Apache Spark on AzureApache Spark on Azure
Apache Spark on Azure
 
AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践
 
平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、Databricksでもやってみましょうか平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、Databricksでもやってみましょうか
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
 
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceYAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
 
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアRubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェア
 

More from Kouhei Sutou

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowKouhei Sutou
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowKouhei Sutou
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかKouhei Sutou
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像Kouhei Sutou
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Kouhei Sutou
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムKouhei Sutou
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroongaKouhei Sutou
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Kouhei Sutou
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムKouhei Sutou
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!Kouhei Sutou
 
PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版Kouhei Sutou
 
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムKouhei Sutou
 
Improve extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionImprove extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionKouhei Sutou
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムKouhei Sutou
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!Kouhei Sutou
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーKouhei Sutou
 
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 PHPでPostgreSQLとPGroongaを使って高速日本語全文検索! PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!Kouhei Sutou
 

More from Kouhei Sutou (20)

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroonga
 
My way with Ruby
My way with RubyMy way with Ruby
My way with Ruby
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!
 
PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版
 
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
 
Improve extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionImprove extension API: C++ as better language for extension
Improve extension API: C++ as better language for extension
 
PGroonga & Zulip
PGroonga & ZulipPGroonga & Zulip
PGroonga & Zulip
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
 
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 PHPでPostgreSQLとPGroongaを使って高速日本語全文検索! PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 

Recently uploaded

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Recently uploaded (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

Apache Arrow - A cross-language development platform for in-memory data

  • 1. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Apache Arrow A cross-language development platform for in-memory data Kouhei Sutou ClearCode Inc. SciPy Japan Conference 2019 2019-04-23
  • 2. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Me Ruby committer since 20042004年からRubyコミッター
  • 3. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Why do I talk at SciPy? なぜSciPyで話しているのか? To introduce Apache ArrowApache Arrowを紹介するため
  • 4. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Apache Arrow A cross-language development platform for in-memory data インメモリーデータ向け多言語対応開発プラットフォーム [cited from `https://arrow.apache.org/']
  • 5. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Cross-language 多言語対応 C, C++, C#, Go, Java,✓ JavaScript, MATLAB, Python,✓ R, Ruby and Rust✓
  • 6. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Development platform 開発プラットフォーム Apache Arrow ... specifies standards and 標準化 ✓ provides implementations 実装 ✓ to advance cooperation by many people 多くの人が協力できるように
  • 7. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 For in-memory data インメモリーデータ Apache Arrow focuses on ↓ for now Apache Arrowは今のところは↓に注力 sharing columnar/tensor data カラムナーデータ・テンソルデータの共有 ✓ analyzing columnar data カラムナーデータの分析 ✓ RPC for columnar data カラムナーデータのRPC ✓
  • 8. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Apache Arrow and Python Apache ArrowとPython As pickle replacement pickleの代替 PySpark does PySparkはすでにやっている ✓ ✓ As dataframe library データフレームライブラリー pandas and Vaes use Apache Arrow a bit pandasとVaesはApache Arrowを少し使っている ✓ ✓
  • 9. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Apache Arrow and me Apache Arrowと私 A release manager(リリースマネージャー) 0.11.0 and 0.13.0 (the latest release/最新リリース)✓ ✓ An active developer(アクティブな開発者)✓
  • 10. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Feature (1) 機能(1) Effective serialization効率的なシリアライズ
  • 11. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Why effective? なぜ効率的なのか Don't parse data データをパースしないから ✓ Use data directly データをそのまま使うから ✓
  • 12. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Data format: Number データフォーマット:数値 Contiguous data (Same as C array) 連続データ(Cの配列と同じ) 32bit integer: [1, 2, 3] 0x01 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x03 ...
  • 13. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Compare to JSON JSONと比較     "[1, 2, 3]" ↓ "1" → 1 (String → Number) "2" → 2 (String → Number) "3" → 3 (String → Number)
  • 14. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Merit of direct data use データを直接使うことのメリット Zero copy cost コピーコストをなくせる Copy is costly for large data 大きなデータではコピーはコストが高い ✓ ✓ (Nearly) zero parse cost (ほぼ)パースコストをなくせる Only need to parse metadata メタデータをパースするだけでよい ✓ ✓
  • 15. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Performance 性能 Fast Python Serialization with Ray and Apache Arrow Apache License 2.0: (c) 2016-2019 The Apache Software Foundation
  • 16. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Zero copy and large data ゼロコピーと大きなデータ pandas can't process large data pandasは大きなデータを扱えない Because it needs to allocate memory メモリーを確保する必要があるから ✓ ✓ Apache Arrow supports memory mapping Apache Arrowはメモリーマッピング対応 Can use data in file directly without copy ファイル内のデータをコピーせずに使える ✓ ✓
  • 17. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Effective string representation 効率的な文字列表現 pandas: Array of strings pandas:文字列の配列 Use discontiguous memory 非連続なメモリーを使う ✓ ✓ Apache Arrow: Data and array of lengths Apache Arrow:データと長さの配列 Use contiguous memory: Fast 連続したメモリーを使う:速い ✓ ✓
  • 18. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Data format: String データフォーマット:文字列 Data bytes + length array UTT-8 string: ["Hello", "", "!"] Data bytes: "Hello!" Length array: [0, 5, 5, 6] i-th length: lengths[i+1] - lengths[i] i-th data: data[lengths[i]:lengths[i+1]]
  • 19. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Feature(?) (2) 機能(?)(2) Specify data formatデータフォーマットを仕様化
  • 20. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Why do Arrow specify? なぜArrowは仕様化するのか Effective data exchange効率的なデータ交換のため
  • 21. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Effective data exchange 効率的なデータ交換 Use common format widely みんなが同じフォーマットを使うこと No format conversion reduces resource usage フォーマットを変換しなくてよいならリソース使用量を減らせる ✓ ✓ Use low {,de}serialize cost format シリアライズコストが低いフォーマットを使うこと Fast✓ ✓
  • 22. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Who uses Arrow format? Arrowフォーマットをだれが使っているか RAPIDS: For NVIDIA GPU✓ Fletcher, InAccel: For FPGA✓ Spark: For interprocess data exchange Spark:プロセス間のデータ交換のために ✓
  • 23. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 CPU and GPU Can't share data on memory メモリー上のデータを共有できない ✓ Need to copy between CPU and GPU CPUとGPU間でコピーする必要がある Effective data exchange improves performance データ交換を効率化することで高速化 ✓ ✓
  • 24. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 CPU and FPGA Can't share data on memory メモリー上のデータを共有できない ✓ Need to copy between CPU and FPGA CPUとFPGA間でコピーする必要がある Effective data exchange improves performance データ交換を効率化することで高速化 ✓ ✓
  • 25. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Spark Process large data 大きなデータを処理 ✓ Need to pass data to worker processes ワーカープロセスにデータを渡す必要がある Effective data exchange improves performance データ交換を効率化することで高速化 ✓ ✓
  • 26. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 PySpark Worker by Python ワーカーはPython Use pikcle to exchange data データ交換にpickleを使用 ✓ ✓ Spark supports Arrow for data exchange Arrowを使ったデータ交換をサポート Disabled by default デフォルトでは無効 ✓ ✓
  • 27. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 PySpark with Arrow In [2]: %time pdf = df.toPandas() CPU times: user 17.4 s, sys: 792 ms, total: 18.1 s Wall time: 20.7 s In [3]: spark.conf.set("spark.sql.execution.arrow.enabled", "true") In [4]: %time pdf = df.toPandas() CPU times: user 40 ms, sys: 32 ms, total: 72 ms Wall time: 737 ms Speeding up PySpark with Apache Arrow
  • 28. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Feature (3) 機能(3) Optimized data processing modules最適化されたデータ処理モジュール
  • 29. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Optimized data processing 最適化されたデータ処理モジュール Apache Arrow targets large data Apache Arrowは大きなデータを対象にしている Performance is important 性能は重要 ✓ ✓ How to get high performance...? どうすれば速くできる。。。? ✓
  • 30. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 High performance (1) 高速化(1) Data localityデータを局所化
  • 31. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Data locality データを局所化 Minimize cache misses キャッシュミスを減らす ✓ Storage is very slow ストレージはすごく遅い ✓ Memory is slow メモリーは遅い ✓ CPU cache is fast CPUキャッシュは速い ✓
  • 32. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 High performance (2) 高速化(2) SIMDSingle Instruction Multi Data 一気に複数のデータを処理する方法
  • 33. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 SIMD Data must be contiguous and aligned データは連続していてアラインされていないといけない Arrow format is SIMD ready ArrowフォーマットはSIMDを使える ✓ ✓ No condition branch 条件分岐がないこと Use bitmap instead of "missing" for null nullを表現するために「欠損値」ではなく別途ビットマップを使う Is it time to stop using sentinel values for null / NA values? ✓ ✓
  • 34. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 No condition branch 条件分岐なし null 1 0 1 data 1 X 3 0 1 1 X 2 5 +[1, null, 3] [null, 2, 5] 0 0 1 X X 8 [null, null, 8] bitwise & + by SIMD including null elementsnull data
  • 35. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 FYI: null 参考情報:null All data types support null in Arrow Arrowはすべての型でnullをサポート ✓ Some types only support null in NumPy NumPyは一部の型でnullをサポート 欠損値の制約 - PythonとApache Arrow ✓
  • 36. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 High performance (3) 高速化(3) Thread
  • 37. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Thread Use multi-cores in single process シングルプロセスで複数コアを使う ✓ Minimize resource conflict リソースの競合をなくすこと Locking to avoid conflict reduces performance 競合を避けるためにロックすると性能劣化 ✓ ✓ Approaches(アプローチ) Read only or copy (shared nothing) リードオンリーにするかコピー(なにも共有しない) ✓ ✓
  • 38. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Apache Arrow and thread Apache Arrowとスレッド Data is read only データはリードオンリー Share data in threads without lock overhead ロックのオーバーヘッドなしでスレッド間でデータを共有 ✓ ✓ Avoid both locking and copying ロックもコピーも避ける They reduce performance どちらも性能劣化するから ✓ ✓
  • 39. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 High performance (4) 高速化(4) Compute kernels計算カーネル
  • 40. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Compute kernels 計算カーネル SIMD ready primitive operations SIMDを使ったプリミティブな演算 ✓ Projection, Filter, Aggregation, ... 射影とかフィルターとか集計とかとか compare, take, mean, ... 比較とか行選択とか平均とか ✓ ✓
  • 41. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 High performance (5) 高速化(5) Subgraph compilerサブグラフコンパイラー
  • 42. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Subgraph compiler: Gandiva サブグラフコンパイラー:Gandiva Compile operator graphs at run-time 実行時に演算グラフをコンパイル Operator graph: combined multiple operations 演算グラフ:演算のまとまり ✓ table.a + table.b < table.c && ...✓ ✓ Usable for query engine backend クエリーエンジンのバックエンドとして使える ✓
  • 43. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 High performance (6) 高速化(6) Query engineクエリーエンジン
  • 44. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Query engine クエリーエンジン For single node シングルノード向け ✓ Dataflow-style operator execution データが流れるように演算を実行 scan → project → filter → aggregate → ... データ取得→射影→フィルター→集計→… ✓ ✓ Apache Arrow Query Engine for C++
  • 45. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Query engine from Python Pythonからクエリーエンジンを使う With pandas(pandasと使う) Large data → execute → to_pandas() 大きなデータ→実行→to_pandas() ✓ ✓ With Dask(Daskと使う) Dask will be able to use this as backend Daskのバックエンドで使えるかも? ✓ ✓
  • 46. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 High performance (7) 高速化(7) Datasetsデータセット
  • 47. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Datasets データセット Scan data from storage/database ストレージ・データベースからデータ取得 File systems: local, HDFS, ...✓ Formats: CSV, Parquet, ...✓ Databases: MySQL, PostgreSQL, ...✓ ✓ Apache Arrow C++ Datasets
  • 48. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Fast datasets 高速なデータセット Predicate pushdown 条件のプッシュダウン Scan only needed data 必要なデータのみ取得 ✓ ✓ Parallel scan 並列取得 ✓
  • 49. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Feature (4) 機能(4) RPC
  • 50. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 RPC: Arrow Flight Fast RPC framework for Arrow Arrow用の高速なRPC ✓ Based on gRPC with low-level extensions gRPCベースでいくつか低レベルの拡張をしている ✓ Apache 0.11.0 Release
  • 51. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Wrap up まとめ Arrow is useful for SciPy community SciPyコミュニティーにArrowは有用 in not only Python but also other languages Pythonだけでなく他の言語でも有用 ✓ ✓ Join Apache Arrow development! Apache Arrowの開発に参加しよう! Ask me how to start なにから始めればよいかは私に相談してね ✓ ✓
  • 52. Apache Arrow - A cross-language development platformfor in-memory data Powered by Rabbit 3.0.0 Next step 次の一歩 Mailing list: dev@arrow.apache.org✓ Chat in Japanese: https://gitter.im/apache-arrow-ja/community✓ ✓ Apache Arrow Tokyo Meetup 2019 this summer? See also: Apache Arrow Tokyo Meetup 2018✓ ✓