SlideShare a Scribd company logo
1 of 25
Download to read offline
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
データを扱いたい!はじめてのAWSShoichiYashiro
 
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnightYahoo!デベロッパーネットワーク
 
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
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4shakezo
 
『アジャイルデータサイエンス』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 developmentyusuke 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

Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperleger Tokyo Meetup
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイントonozaty
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用KLab Inc. / Tech
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdkokinagano2
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfTakayuki Nakayama
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルCRI Japan, Inc.
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルCRI Japan, Inc.
 

Recently uploaded (8)

Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 

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