SlideShare a Scribd company logo
1 of 44
Download to read offline
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
RubyもApache Arrowで
データ処理言語の
仲間入り
須藤功平
クリアコード
DataScience.rbワークショップ
2017-05-19
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
はじめに
私はRubyが好きだ
だからデータ分析だって
Rubyでやりたい
Rubyよりも向いている言語があるのはわかっているけどさー
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Apache Arrow
データフォーマットの仕様
と
その仕様を処理する実装
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:解決したい問題
高いデータ交換コスト
→低くしたい✓
✓
重複した最適化実装
→実装を共有したい✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:文脈
ビッグデータの
分析
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ビッグデータの分析
いろんなシステムが連携
Java実装のもろもろとPythonとR✓
✓
システム間でデータ交換が必要
交換する度にシリアライズ・パース✓
↑に結構CPUと時間を使われる…✓
そんなのより分析処理に使いたい!✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:解決方針
コストゼロの
シリアライズ・
パース
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:コストゼロの実現
そのまま使えるフォーマット
例:int8の配列→int8の値を連続配置✓
1バイトずつずらせば高速アクセス可✓
✓
Arrowのトレードオフ
サイズ圧縮よりシリアライズゼロ✓
参考:Parquetはサイズ圧縮優先✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrowがある世界
各システムがサクサク連携
例:PySparkが高速化✓
理由:Py🡘Javaのデータ交換コスト減✓
✓
Java・Python・R以外も活躍
例:Ruby・Lua・Julia・Go・Rust…✓
理由:低コストでデータ交換可能✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ArrowとRuby
チャンス!
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ArrowとRubyとデータ分析
RubyがArrowに対応
Rubyにデータが回ってくる!✓
→Rubyにもデータ分析の機会が!
(今はできることは少ないだろうけど…)
✓
✓
次のステップ
できることを増やしていく!✓
→Rubyでもいろいろデータ分析!✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ArrowとRubyの今
RubyでArrowを使える!
私が使えるようにしているから!
コミッターにもなった
✓
公式リポジトリーにも入っている
厳密に言うと違うんだけど公式サポートだと思ってよい
✓
✓
Rubyでデータを読み書きできる
いくらかデータ処理もできる✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
今できること
Python・R…とのデータ交換✓
データ処理をいくらか✓
Rubyの各種ライブラリー間での
データ交換
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:Python
# pandasでデータ生成→Arrow形式で書き込み
import pandas as pd
import pyarrow as pa
df = pd.DataFrame({"a": [1, 2, 3],
"b": ["hello", "world", "!"]})
record_batch = pa.RecordBatch.from_pandas(df)
with pa.OSFile("/dev/shm/pandas.arrow", "wb") as sink:
schema = record_batch.schema
writer = pa.RecordBatchFileWriter(sink, schema)
writer.write_batch(record_batch)
writer.close()
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:Ruby
# RubyでArrow形式のpandasのデータを読み込み
require "arrow"
Input = Arrow::MemoryMappedInputStream
Input.open("/dev/shm/pandas.arrow") do |input|
reader = Arrow::RecordBatchFileReader.new(input)
reader.each do |record_batch|
puts("=" * 40)
puts(record_batch)
end
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:Lua
-- LuaでArrow形式のpandasのデータを読み込み
-- Torchへの変換コードはArrowの公式リポジトリーにアリ
local lgi = require "lgi"
local Arrow = lgi.Arrow
local input_class = Arrow.MemoryMappedInputStream
local input = input_class.new("/dev/shm/pandas.arrow")
local reader = Arrow.RecordBatchFileReader.new(input)
for i = 0, reader:get_n_record_batches() - 1 do
local record_batch = reader:get_record_batch(i)
print(string.rep("=", 40))
print("record-batch["..i.."]:")
io.write(record_batch:to_string())
end
input:close()
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Feather:R
# Rでデータ生成→Feather形式で書き込み
library("feather")
df = data.frame(a=c(1, 2, 3),
b=c(1.1, 2.2, 3.3))
write_feather(df, "/dev/shm/dataframe.feather")
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Feather:Ruby
# RubyでFeather形式のRのデータを読み込み
require "arrow"
Input = Arrow::MemoryMappedInputStream
Input.open("/dev/shm/dataframe.feather") do |input|
reader = Arrow::FeatherFileReader.new(input)
reader.columns.each do |column|
puts("#{column.name}: #{column.to_a.inspect}")
end
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Parquet:Python
# Pythonでデータ生成→Parquet形式で書き込み
import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq
df = pd.DataFrame({"a": [1, 2, 3],
"b": ["hello", "world", "!"]})
table = pa.Table.from_pandas(df)
pq.write_table(table, "/dev/shm/pandas.parquet")
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Parquet:Ruby
# RubyでParquet形式のデータを読み込み
require "arrow"
require "parquet"
path = "/dev/shm/pandas.parquet"
reader = Parquet::ArrowFileReader.new(path)
table = reader.read_table
table.each_column do |column|
puts("#{column.name}: #{column.to_a.inspect}")
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
対応データ形式まとめ
Arrow形式
各種言語(これから広く使われるはず)✓
✓
Feather形式
Python・R専用✓
✓
Parquet形式
各種言語(Hadoop界隈ですでに広く使われている)✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
データ処理例
Groongaでフィルター✓
Groonga
全文検索エンジン✓
カラムストアなので集計処理も得意✓
Apache Arrow対応✓
よくできたRubyバインディングあり✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Groonga:Ruby
# 空のテーブルにArrow形式のデータを読み込む
logs = Groonga::Array.create(name: "logs")
logs.load_arrow("/dev/shm/pandas.arrow")
logs.each {|record| p record.attributes}
# フィルター
filtered_logs = logs.select do |record|
record.b =~ "hello" # "hello"で全文検索
end
# フィルター結果をArrow形式で書き込み
filtered_logs.dump_arrow("/dev/shm/filtered.arrow",
column_names: ["a", "b"])
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Groonga:Python
# Arrow形式のGroongaでのフィルター結果を読み込む
import pyarrow as pa
with pa.OSFile("/dev/shm/filtered.arrow") as source:
writer = pa.RecordBatchFileReader(source)
print(writer.get_record_batch(0).to_pandas())
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Rubyでデータ処理(現状)
既存のCライブラリーを活用
速度がでるし機能もある✓
✓
CライブラリーをArrowに対応
Arrow→Ruby→Cライブラリー
↑から↓で高速化(オブジェクト生成は遅い)
✓
Arrow→Cライブラリー✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Rubyでデータ処理(案)
Fluentdとか速くなりそう
途中でメッセージを参照しないなら✓
✓
MessagePackからArrowに変える
Arrowのまま出力先へ送る✓
途中でRubyオブジェクトを作らない
シリアライズ・パースがなくなって速い!
✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
多次元配列
Arrowではオプション機能
テンソルと呼んでいる
(traditional multidimensional array objectと説
明)
✓
✓
C++実装ではサポート
バインディングでは使える✓
Python・Ruby・Lua…では使える✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Tensor:Python
# NumPyでデータ生成→書き込み
import pyarrow as pa
import numpy as np
ndarray = np.random.randn(10, 6) # 10x6
print(ndarray)
tensor = pa.Tensor.from_numpy(ndarray)
with pa.OSFile("/dev/shm/tensor.arrow", "wb") as sink:
pa.write_tensor(tensor, sink)
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Tensor:Ruby
# Rubyで読み込み
require "arrow"
Input = Arrow::MemoryMappedInputStream
Input.open("/dev/shm/tensor.arrow") do |input|
tensor = input.read_tensor(0)
p tensor.shape # => [10, 6]
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Ruby:GSL
# GSLオブジェクトに変換
require "arrow"
require "arrow-gsl"
require "pp"
Input = Arrow::MemoryMappedInputStream
Input.open("/dev/shm/tensor.arrow") do |input|
tensor = input.read_tensor(0)
pp tensor.to_gsl
# tensor.to_gsl.to_arrow == tensor
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Ruby:NMatrix
# NMatrixオブジェクトに変換
require "arrow"
require "arrow-nmatrix"
require "pp"
Input = Arrow::MemoryMappedInputStream
Input.open("/dev/shm/tensor.arrow") do |input|
tensor = input.read_tensor(0)
pp tensor.to_nmatrix
# tensor.to_nmatrix.to_arrow == tensor
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Ruby:Numo::NArray
# Numo::NArrayオブジェクトに変換
require "arrow"
require "arrow-numo-narray"
require "pp"
Input = Arrow::MemoryMappedInputStream
Input.open("/dev/shm/tensor.arrow") do |input|
tensor = input.read_tensor(0)
pp tensor.to_narray
# tensor.to_narray.to_arrow == tensor
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ここまでのまとめ1
Arrowが実現したい世界
データ交換コストが低い世界✓
最適化実装を共有している世界✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ここまでのまとめ2
RubyとArrowの今
ArrowはRubyを公式サポート!✓
Rubyの外の世界とデータ交換可能
(Arrow・Feather・Parquetをサポート)
✓
Rubyの各種ライブラリーとの
相互変換が可能
(メモリーコピーぐらいのコストで)
✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ArrowとRubyとこれから
Arrow
データフレーム処理の最適化実装✓
マルチコア・GPU対応✓
✓
Ruby
Red Data Toolsプロジェクト✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Red Data Tools
Rubyでデータ処理したいなぁ!
の実現を目指すプロジェクト
✓
リソース:
GitHub: red-data-tools✓
https://red-data-tools.github.io✓
https://gitter.im/red-data-tools✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
既存プロダクト
Red Arrow(ArrowのRubyバインディング)
Red Arrow XXX(ArrowとXXXの相互変換)✓
✓
Parquet GLib(ParquetのGLibバインディング)✓
Red Parquet(ParquetのRubyバインディング)✓
Jekyll Jupyter Notebook
plugin(JekyllでJupyter Notebookを表示)
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ポリシー1
Collaborate
over Ruby communities
Ruby以外の人たちとも言語を超えて協力する
Apache Arrowがやっていることはまさにそう
もちろんRubyの人たちとも協力する
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ポリシー2
Acting than blaming
時間は嘆き・非難より手を動かすことに使う
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ポリシー3
Continuous small works than
a temporary big work
一時的にガッとやって終わりより
小さくても継続して活動する
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ポリシー4
The current
lack of knowledge
isn't matter
現時点で数学や統計学などの知識が足りなくても問題ない
既存の実装を使ったりそこから学んだりできるから
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ポリシー5
Ignore blames from outsiders
部外者の非難は気にしない
結果がでるまでグチグチ言われるはず :p
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ポリシー6
Fun!
Because we use Ruby!
Rubyを使うんだし楽しくやろう!
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Join us!
Rubyでデータ処理したい人!✓
ポリシーに同意できる人!✓
リソース:
GitHub: red-data-tools✓
https://red-data-tools.github.io✓
https://gitter.im/red-data-tools✓
✓

More Related Content

What's hot

Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケットTakaaki Hoyo
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!デベロッパーネットワーク
 
RestfulなAPIの設計のお話
RestfulなAPIの設計のお話RestfulなAPIの設計のお話
RestfulなAPIの設計のお話ftsan
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?Insight Technology, Inc.
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)Hironobu Suzuki
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
実践!Elasticsearch + Sudachi を用いた全文検索エンジン
実践!Elasticsearch + Sudachi を用いた全文検索エンジン実践!Elasticsearch + Sudachi を用いた全文検索エンジン
実践!Elasticsearch + Sudachi を用いた全文検索エンジンS. T.
 
文脈自由文法の話
文脈自由文法の話文脈自由文法の話
文脈自由文法の話kogecoo
 
PostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうPostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうkasaharatt
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろうShingo Omura
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...NTT DATA Technology & Innovation
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
 
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...Yahoo!デベロッパーネットワーク
 

What's hot (20)

Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
 
RestfulなAPIの設計のお話
RestfulなAPIの設計のお話RestfulなAPIの設計のお話
RestfulなAPIの設計のお話
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
実践!Elasticsearch + Sudachi を用いた全文検索エンジン
実践!Elasticsearch + Sudachi を用いた全文検索エンジン実践!Elasticsearch + Sudachi を用いた全文検索エンジン
実践!Elasticsearch + Sudachi を用いた全文検索エンジン
 
文脈自由文法の話
文脈自由文法の話文脈自由文法の話
文脈自由文法の話
 
PostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうPostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろう
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
 

Similar to RubyもApache Arrowでデータ処理言語の仲間入り

Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアRubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアKouhei Sutou
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataKouhei Sutou
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataKouhei Sutou
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4leverages_event
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発emasaka
 
aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話Nozomu KURASAWA
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionGoh Matsumoto
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでKouhei Sutou
 
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 PHPでPostgreSQLとPGroongaを使って高速日本語全文検索! PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!Kouhei Sutou
 
【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選虎の穴 開発室
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日nukaemon
 
Pry による repl 駆動開発について
Pry による repl 駆動開発についてPry による repl 駆動開発について
Pry による repl 駆動開発についてTomoya Kawanishi
 
Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Kouhei Sutou
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門Tomoya Kawanishi
 
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会Makoto SAKAI
 

Similar to RubyもApache Arrowでデータ処理言語の仲間入り (20)

Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアRubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェア
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory data
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory data
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
 
aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject Introspectionで
 
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 PHPでPostgreSQLとPGroongaを使って高速日本語全文検索! PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 
【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選
 
NanoA
NanoANanoA
NanoA
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
 
Pry による repl 駆動開発について
Pry による repl 駆動開発についてPry による repl 駆動開発について
Pry による repl 駆動開発について
 
Haikara
HaikaraHaikara
Haikara
 
Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
 

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
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアKouhei 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
 

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
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
 
Apache Arrow 2019
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019
 
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
 
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」セミナー
 

RubyもApache Arrowでデータ処理言語の仲間入り