Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Apache Beam Go SDK 触ってみた話
Search
apstndb
March 25, 2018
Programming
1
1.1k
Apache Beam Go SDK 触ってみた話
Open Go Friday #2 で話した資料
2018年3月時点の master ブランチを触ってみた話です。
apstndb
March 25, 2018
Tweet
Share
More Decks by apstndb
See All by apstndb
GKE/Kubernetes の Service はどう動いているのか
apstndb
18
9.7k
Other Decks in Programming
See All in Programming
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
140
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
920
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
16
13k
PicoRuby on Rails
makicamel
2
140
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
290
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
130
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
480
TypeScriptでDXを上げろ! Hono編
yusukebe
3
740
生成AI時代のコンポーネントライブラリの作り方
touyou
1
280
リバースエンジニアリング新時代へ! GhidraとClaude DesktopをMCPで繋ぐ/findy202507
tkmru
3
820
Startups on Rails in Past, Present and Future–Irina Nazarova, RailsConf 2025
irinanazarova
0
220
Porting a visionOS App to Android XR
akkeylab
0
670
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Making Projects Easy
brettharned
116
6.3k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Balancing Empowerment & Direction
lara
1
450
Scaling GitHub
holman
460
140k
Six Lessons from altMBA
skipperchong
28
3.9k
Building Applications with DynamoDB
mza
95
6.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
47
9.6k
Statistics for Hackers
jakevdp
799
220k
Transcript
Apache Beam Go SDK 触ってみた話 apstndb
Apache Beam とは • Google 発のバッチ処理とストリーミング処理の統一モデルである Dataflow モデル を扱う OSS
• フルマネージドなデータ処理サービス Google Cloud Dataflow 実行可能 ◦ そもそも Apache 寄贈前は Dataflow SDK ◦ 他の Runner 上でも実行可能(Spark, Flink, etc...) • 2.4.0 では Java と Python の SDK が含まれる ◦ 2018年3月現在開発が進んでいる目玉は Streaming SQL と Go SDK • Go でもクラウドで分散データ処理が可能になる?
Apache Beam Go SDK のステータス(2018/3現在) - 設計資料 https://s.apache.org/beam-go-sdk-design-rfc - JIRA
の sdk-go コンポーネントとして管理されている - 開発状況 - 長い間 go-sdk ブランチで開発 - Apache Beam 2.4 ブランチが切られてから master にマージ済 - 2.5 でリリース予定? https://github.com/apache/beam/blob/master/sdks/go/README.md
Apache Beam Go SDK のステータス
構成要素 - PCollection - Beam 上でのデータセット - リストのようなもの - PTransform
- PCollection から PCollection を作る操作 - 複数入出力でマージ(JOIN) や分岐も可能 - ParDo は map / flatMap 相当 - 他にも Combine, GroupByKey, Flatten, Partition 等
ソースコードの実例 var input beam.PCollection = beam.Create(s, 1, 2, 3, 4)
var square beam.PCollection = beam.ParDo(s, func(x int) int { return x * x }, input) // int to int var strings beam.PCollection = beam.ParDo(s, strconv.Itoa, square) textio.Write(s, *output, strings) 値の型がない!
Go SDK での実行におけるフェーズ • Compile ◦ 通常の Go のプログラムとしてコンパイルする ◦
型チェックが行われるがジェネリクスがないため大部分は検査できない • Pipeline Construction ◦ Go のプログラム実行時に Beam の実行グラフを生成する ◦ リフレクションでパイプラインの型チェックをする ▪ panic するか err で受け取るかは選択可能 • Runtime ◦ 実行グラフを元に Runner 上で実行する ▪ Cloud Dataflow のジョブ内での処理に対応 ◦ 型チェック済なので安全
実行時に管理される型情報 stringList := beam.CreateList(s, []string{"a", "b", "c"}) fmt.Println("stringList:", stringList.Type()) //
stringList: string intList := beam.CreateList(s, []int{1, 2, 3}) fmt.Println("intList:", intList.Type()) // intList: int convList := beam.ParDo(s, strconv.Itoa, intList) fmt.Println("convList:", convList.Type()) // convList: string convList2 := beam.ParDo(s, strconv.Itoa, stringList) fmt.Println("convList2:", convList2.Type()) // panic
Direct Runnerでの実行 • ローカルで実行可能 • パイプラインのグラフのにおける型情報がデバッグ出力される • 実装済の機能は動く
Cloud Dataflow での実行 • ジョブを発行可能 ◦ グラフが見える • 2018/3 現在の
master は機能せず • 途中から詰まったままになる • 実行状況の詳細も取れない ◦ Currently unsupported らしい
まとめ - Go にも分散処理が来る日は近そう - 脱 Java したい! - エディタでの対応が望まれる(型チェック・補完)
- Go にもやっぱりジェネリクスは欲しいのでは?