SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
Yahoo!デベロッパーネットワーク
 
『アジャイルデータサイエンス』2章 データ
『アジャイルデータサイエンス』2章 データ『アジャイルデータサイエンス』2章 データ
『アジャイルデータサイエンス』2章 データ
Hisao Soyama
 

Mais procurados (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人目機械学習エンジニアの現在地
 

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

『アジャイルデータサイエンス』1章 理論
『アジャイルデータサイエンス』1章 理論 『アジャイルデータサイエンス』1章 理論
『アジャイルデータサイエンス』1章 理論
Hisao Soyama
 
elasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみるelasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみる
Katsushi Yamashita
 

Semelhante a 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認定アナリストが送る~誰でもできるデータ分析~
 

Último

Último (10)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

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