SlideShare a Scribd company logo
Dataflow (Python) を使って
Elasticsearchにデータを移行した話
(株)エーピーコミュニケーションズ 山岡 亮
2018/03/02
自己紹介
• 山岡 亮(やまおか りょう)
• (株)エーピーコミュニケーションズ
• 新規自社サービス立ち上げ事業部に所属(5人)
• NEIGHBORSというサービスを作っています
(Riot.js + AppEngine Golang)
• 仕事ではGCPしか使っていないのに
AWS SA Professional持ちです
(趣味で取りました)
Qiita
https://qiita.com/ryo-yamaoka
Twitter
https://twitter.com/mountainhill14
背景
• こ
・サービスのコンセプト「自分一人では気付けない情報やニーズ、面白さを知る」
・Google検索は1→100にすることはできるが、0→1には向いていない(何を知りたいかわかっているものは
調べられるが、調べるべき対象が確定されていないと調べようがない)
・例えば皆さん「グヤーシュ」という料理をご存知ですか?多分知らないですよね?
実はすごく美味しいハンガリー料理です。でも皆さんはその存在を知らないので今これを知った瞬間まで
調べることさえできませんでしたよね?
そういったものをピックアップすることを目指しているサービスです
・具体的にはユーザーをフォローすることができるRSSリーダーで、配信された記事を閲覧すると
それがフォロワーに伝達される(読んだ人のアイコンがついてタイムラインの一番先頭に来る)という動きです
https://neighbors.cc/
本日の内容
• NEIGHBORSで全文検索機能を作りたい
• アプリケーション側はRSSから取得した記事をElasticsearchに
登録する処理を追加
• 既存の記事(約600,000件のDatastore Entity)を別途移行した
時にやったこと、そこから脱線して遊んでみたことを共有します
構成
• Datastore Property
• 記事タイトル
• 記事概要
• URL
• 登録日時
• Elasticsearch
• ElasticCloud(GCP)を使用 asia-northeast-1はよ
構成
• Datastore Property
• 記事タイトル
• 記事概要
• URL
• 登録日時
• Elasticsearch
• ElasticCloud(GCP)を使用 asia-northeast-1はよ
←ここに対して全文検索をかけたい
最初にやったこと
• Dataflowを使う
• Elasticsearchを扱うPythonライブラリがあったので、1エンティティずつ
投入する処理にした
• Bulkじゃないので遅いだろうけど、まぁ1回ポッキリだしちょっとくらい
遅くてもいいやという軽い気持ちでやってみた
が、ダメ
あまりにも遅すぎた
3件/secくらい
https://github.com/twitter/twemoji
・600,000 / 3 / 3,600 ≒ 55時間……?!
・ワーカーをマシマシにしてみたが20件/secくらいが限界だった
・流石にちょっと安直過ぎた
次にやったこと
• 真面目にAppEngineのTaskQueueでバッチを作った
• 128件ずつのBulkでサクッと1,300件/secくらいのスループット
• 真っ当な手段で万事解決
次にやったこと
• 真面目にAppEngineのTaskQueueでバッチを作った
• 128件ずつのBulkでサクッと1,300件/secくらいのスループット
• 真っ当な手段で万事解決
• 残念ながら当然の結果
めでたしめでたし
仕事はここで終わったので
ちょっと脱線してみました
どうやったら速くなるのか?
MythBusters(邦題:怪しい伝説)的脱線
どうする?
• やはりBulkを使おう
• 当然全Entityを1つに集約するとデカすぎる
• 1つあたりxxx件にまとめる、的な都合の良い処理は無いっぽい
• 全Entityに乱数を割り振ってそれをキーにして集約しよう
結果
• 上手くいった
• 5,000件/secくらいのスループットが出た
• 但しGCEで処理するので単価は高い
結果
• 上手くいった
• 5,000件/secくらいのスループットが出た
• 但しGCEで処理するので単価は高い
• やっぱりこの程度の要件だったらTaskQueueのバッチ作った方がいい
結果
• 上手くいった
• 5,000件/secくらいのスループットが出た
• 但しGCEで処理するので単価は高い
• やっぱりこの程度の要件だったらTaskQueueのバッチ作った方がいい
• 残念ながら当然の結論
結果
ちなみに
Javaには標準でElasticsearchIOがあります
https://github.com/twitter/twemoji

More Related Content

What's hot

データプランナーによるデータ系施策について
データプランナーによるデータ系施策についてデータプランナーによるデータ系施策について
データプランナーによるデータ系施策について
Recruit Lifestyle Co., Ltd.
 
コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話
ShunyoKawamoto
 
プロダクト中心のデータ駆動を推進していくために必要なこと
プロダクト中心のデータ駆動を推進していくために必要なことプロダクト中心のデータ駆動を推進していくために必要なこと
プロダクト中心のデータ駆動を推進していくために必要なこと
Kazuhito Osabe
 
データを扱いたい!はじめてのAWS
データを扱いたい!はじめてのAWSデータを扱いたい!はじめてのAWS
データを扱いたい!はじめてのAWS
ShoichiYashiro
 
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
Yahoo!デベロッパーネットワーク
 
Bigfoot 活用事例
Bigfoot 活用事例Bigfoot 活用事例
Bigfoot 活用事例
Toshihiro Gotou
 
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
Atsushi Tsuchiya
 
Power BI 勉強会 0902 小林 : Power BI と Azure ML でデータサイエンスしてみる
Power BI 勉強会 0902 小林 : Power BI と Azure ML でデータサイエンスしてみるPower BI 勉強会 0902 小林 : Power BI と Azure ML でデータサイエンスしてみる
Power BI 勉強会 0902 小林 : Power BI と Azure ML でデータサイエンスしてみる
寿 小林
 
『アジャイルデータサイエンス』2章 データ
『アジャイルデータサイエンス』2章 データ『アジャイルデータサイエンス』2章 データ
『アジャイルデータサイエンス』2章 データHisao Soyama
 
Data Scientist Workbench 入門
Data Scientist Workbench 入門Data Scientist Workbench 入門
Data Scientist Workbench 入門
soh kaijima
 
dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料
s. kaijima
 
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
Shinichi Nakagawa
 
Power bi 0602_kobayashi
Power bi 0602_kobayashiPower bi 0602_kobayashi
Power bi 0602_kobayashi
寿 小林
 
Pythonで時系列のデータを分析してみよう
Pythonで時系列のデータを分析してみようPythonで時系列のデータを分析してみよう
Pythonで時系列のデータを分析してみよう
Tatuya Kobayashi
 
ソウゾウ1人目機械学習エンジニアの現在地
ソウゾウ1人目機械学習エンジニアの現在地 ソウゾウ1人目機械学習エンジニアの現在地
ソウゾウ1人目機械学習エンジニアの現在地
Wakana Nogami
 

What's hot (15)

データプランナーによるデータ系施策について
データプランナーによるデータ系施策についてデータプランナーによるデータ系施策について
データプランナーによるデータ系施策について
 
コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話
 
プロダクト中心のデータ駆動を推進していくために必要なこと
プロダクト中心のデータ駆動を推進していくために必要なことプロダクト中心のデータ駆動を推進していくために必要なこと
プロダクト中心のデータ駆動を推進していくために必要なこと
 
データを扱いたい!はじめてのAWS
データを扱いたい!はじめてのAWSデータを扱いたい!はじめてのAWS
データを扱いたい!はじめてのAWS
 
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
 
Bigfoot 活用事例
Bigfoot 活用事例Bigfoot 活用事例
Bigfoot 活用事例
 
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
 
Power BI 勉強会 0902 小林 : Power BI と Azure ML でデータサイエンスしてみる
Power BI 勉強会 0902 小林 : Power BI と Azure ML でデータサイエンスしてみるPower BI 勉強会 0902 小林 : Power BI と Azure ML でデータサイエンスしてみる
Power BI 勉強会 0902 小林 : Power BI と Azure ML でデータサイエンスしてみる
 
『アジャイルデータサイエンス』2章 データ
『アジャイルデータサイエンス』2章 データ『アジャイルデータサイエンス』2章 データ
『アジャイルデータサイエンス』2章 データ
 
Data Scientist Workbench 入門
Data Scientist Workbench 入門Data Scientist Workbench 入門
Data Scientist Workbench 入門
 
dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料
 
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
 
Power bi 0602_kobayashi
Power bi 0602_kobayashiPower bi 0602_kobayashi
Power bi 0602_kobayashi
 
Pythonで時系列のデータを分析してみよう
Pythonで時系列のデータを分析してみようPythonで時系列のデータを分析してみよう
Pythonで時系列のデータを分析してみよう
 
ソウゾウ1人目機械学習エンジニアの現在地
ソウゾウ1人目機械学習エンジニアの現在地 ソウゾウ1人目機械学習エンジニアの現在地
ソウゾウ1人目機械学習エンジニアの現在地
 

Similar to Dataflow(python)を使ってelasticsearchにデータを移行した話

スタートアップツールチラ見せ
スタートアップツールチラ見せスタートアップツールチラ見せ
スタートアップツールチラ見せ
Hisatoshi Kikumoto
 
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
shakezo
 
『アジャイルデータサイエンス』1章 理論
『アジャイルデータサイエンス』1章 理論 『アジャイルデータサイエンス』1章 理論
『アジャイルデータサイエンス』1章 理論 Hisao Soyama
 
elasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみるelasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみるKatsushi Yamashita
 
Google BigQuery 導入編
Google BigQuery 導入編Google BigQuery 導入編
Google BigQuery 導入編
zuya
 
Google apps script 活用ミートアップ
Google apps script 活用ミートアップGoogle apps script 活用ミートアップ
Google apps script 活用ミートアップ
Hisashi Inoue
 
Testing machine learning development
Testing machine learning developmentTesting machine learning development
Testing machine learning development
yusuke shibui
 
業務システムで使える可視化テクニック - Apache HTTP編 -
業務システムで使える可視化テクニック - Apache HTTP編 -業務システムで使える可視化テクニック - Apache HTTP編 -
業務システムで使える可視化テクニック - Apache HTTP編 -
Yasuyuki Sugai
 
ドローン向けソフトウェア事業
ドローン向けソフトウェア事業ドローン向けソフトウェア事業
ドローン向けソフトウェア事業
Masayuki Isobe
 
高卒でIT企業に入った体験談
高卒でIT企業に入った体験談高卒でIT企業に入った体験談
高卒でIT企業に入った体験談
ishikawa_mizuki
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
Shuhei Iitsuka
 
Generative AIと検索を組み合わせた新たな体験の模索
Generative AIと検索を組み合わせた新たな体験の模索Generative AIと検索を組み合わせた新たな体験の模索
Generative AIと検索を組み合わせた新たな体験の模索
yusuke shibui
 
世界初elastic認定アナリストが送る~誰でもできるデータ分析~
世界初elastic認定アナリストが送る~誰でもできるデータ分析~世界初elastic認定アナリストが送る~誰でもできるデータ分析~
世界初elastic認定アナリストが送る~誰でもできるデータ分析~
aslead
 

Similar to Dataflow(python)を使ってelasticsearchにデータを移行した話 (13)

スタートアップツールチラ見せ
スタートアップツールチラ見せスタートアップツールチラ見せ
スタートアップツールチラ見せ
 
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
 
『アジャイルデータサイエンス』1章 理論
『アジャイルデータサイエンス』1章 理論 『アジャイルデータサイエンス』1章 理論
『アジャイルデータサイエンス』1章 理論
 
elasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみるelasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみる
 
Google BigQuery 導入編
Google BigQuery 導入編Google BigQuery 導入編
Google BigQuery 導入編
 
Google apps script 活用ミートアップ
Google apps script 活用ミートアップGoogle apps script 活用ミートアップ
Google apps script 活用ミートアップ
 
Testing machine learning development
Testing machine learning developmentTesting machine learning development
Testing machine learning development
 
業務システムで使える可視化テクニック - Apache HTTP編 -
業務システムで使える可視化テクニック - Apache HTTP編 -業務システムで使える可視化テクニック - Apache HTTP編 -
業務システムで使える可視化テクニック - Apache HTTP編 -
 
ドローン向けソフトウェア事業
ドローン向けソフトウェア事業ドローン向けソフトウェア事業
ドローン向けソフトウェア事業
 
高卒でIT企業に入った体験談
高卒でIT企業に入った体験談高卒でIT企業に入った体験談
高卒でIT企業に入った体験談
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
 
Generative AIと検索を組み合わせた新たな体験の模索
Generative AIと検索を組み合わせた新たな体験の模索Generative AIと検索を組み合わせた新たな体験の模索
Generative AIと検索を組み合わせた新たな体験の模索
 
世界初elastic認定アナリストが送る~誰でもできるデータ分析~
世界初elastic認定アナリストが送る~誰でもできるデータ分析~世界初elastic認定アナリストが送る~誰でもできるデータ分析~
世界初elastic認定アナリストが送る~誰でもできるデータ分析~
 

Recently uploaded

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 

Recently uploaded (7)

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 

Dataflow(python)を使ってelasticsearchにデータを移行した話