Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GAEを用いたBQ Load戦略/gae_bq_load_strategy

fuzyco
April 24, 2018

GAEを用いたBQ Load戦略/gae_bq_load_strategy

bq_sushi#7での発表資料

fuzyco

April 24, 2018
Tweet

More Decks by fuzyco

Other Decks in Technology

Transcript

  1. copyright Fringe81 Co.,Ltd.  /  Ø  Ø 

    l GAE"   l BQ Load l   #! l GAETaskQueue 3
  2. copyright Fringe81 Co.,Ltd.  lStandard Environment lPaaS l  

    lJava8/Scala l 8   App Engine Big Query App Engine /
  3. copyright Fringe81 Co.,Ltd.  l l&"# l&!% lAPI  l

    $  9  App Engine Big Query App Engine /
  4. copyright Fringe81 Co.,Ltd. App Engine Push Queue Push Queue App

    Engine App Engine 1 3 2 2 Enqueue    Push Queue  GAE 2 Push 3 Enqueue 3 Push 19
  5. copyright Fringe81 Co.,Ltd. App Engine Push Queue "! Enqueue GAE

    "! #$ Push Queue       20
  6. copyright Fringe81 Co.,Ltd. App Engine Push Queue  *)'#Enqueue GAE

      *)'#&,.! Push Queue  #  "!    )(.-$%+  21
  7. copyright Fringe81 Co.,Ltd.    l Ver.1 (Streaming Insert)

    l Ver.2 (BQ Load) l Ver.3 (Pull Queue  BQ Load) 24
  8. copyright Fringe81 Co.,Ltd. l Ver.1 (Streaming Insert) l Ver.2 (BQ

    Load) l Ver.3 (Pull Queue  BQ Load)    25
  9. copyright Fringe81 Co.,Ltd. Streaming Insert BQ    

    Streaming Insert   Ver.1(Streaming Insert) 26 BigQuery 
  10. copyright Fringe81 Co.,Ltd. Streaming Insert l   BigQuery 

      l $0.01/200MB BigQuery Streaming Insert Table User id INTEGER name STRING 27   User(id: Long, name: String)
  11. copyright Fringe81 Co.,Ltd.  BQ!"  !"   

    !"  !"  BQ!"    !"  ## 30
  12. copyright Fringe81 Co.,Ltd. Streaming Insert streaming insert   BigTable

      select BigTable  [https://cloud.google.com/blog/big-data/2017/06/life-of-a-bigquery-streaming-insert] 32
  13. copyright Fringe81 Co.,Ltd. Streaming Insert streaming insert  # BigTable!"

    select BigTable!"  33 deleteupdate  90  [https://cloud.google.com/blog/big-data/2017/06/life-of-a-bigquery-streaming-insert]
  14. copyright Fringe81 Co.,Ltd. l Ver.1 (Streaming Insert) l Ver.2 (BQ

    Load) l Ver.3 (Pull Queue  BQ Load)    37
  15. copyright Fringe81 Co.,Ltd. GCS BQ Load BQ! !  !

    Cloud Storage   Ver.2 (BQ Load)   BQ Load BigQuery 38  
  16. copyright Fringe81 Co.,Ltd. GCS BQ Load BQ! s  

    Ver.2 (BQ Load) 39 !  ! Cloud Storage   BQ Load BigQuery  
  17. copyright Fringe81 Co.,Ltd. BQ Load CSV JSON BigQuery Load 

    1 BQ     Load 41 Table User id INTEGER name STRING id, name 1, “hoge” 2, “fuga” {“id”: 1, “name”: “hoge”} {“id”: 2, “name”: “fuga”}
  18. copyright Fringe81 Co.,Ltd. GCS BQ Load BQ!   Ver.2

    (BQ Load) 43 !  ! Cloud Storage   BQ Load BigQuery  
  19. copyright Fringe81 Co.,Ltd. Google Cloud Storage !, )$(./# GCS <=>

    BQ'/%  "$&+'/%*-   GCSJSON*- 44
  20. copyright Fringe81 Co.,Ltd. GCS => BQ Cloud Storage BQ Load

    hoge1.json hoge_table hoge2.json hoge3.json hoge_table hoge_table BigQuery 45
  21. copyright Fringe81 Co.,Ltd. BQ Load l Streaming Insert% BQ Load%

    l -.,+* & ) l $-.,+ *)! ) l ACID +  u *-.,% #)'#")(Atomicity) u -.,%)("(Consistency) 46
  22. copyright Fringe81 Co.,Ltd. GCS BQ Load BQ %  

    Ver.2 (BQ Load) Load  50 % "$%! Cloud Storage  BQ Load BigQuery  #
  23. copyright Fringe81 Co.,Ltd. BQ Load l 15'"% 10 $" l

    * '"% 1,000  $"( ) l * #& (!'$" #& ) 10,000  $"( )  52
  24. copyright Fringe81 Co.,Ltd. BQ Load l 15)0836!10"%%/53$ l ; )0836!

    1,000 "%%/53$9 +&) l ; )47/,-19.28/53+"47/,-1:! 10,000 "%%/53$9 +&:  53   "#" +(Load*'! 
  25. copyright Fringe81 Co.,Ltd. BQ Load l 15$-614 10 ""+31! l

    9 $-614 1,000  ""+31!7 '#) l 9 $25+()/7*06+31'  25+()/8 10,000  ""+31!7 '#8  54 .6,& %
  26. copyright Fringe81 Co.,Ltd. BQ Load l 15"*3.1 10 (0. l

    6 "*3.1 1,000  (0.4 $ ) l 6 "/2(%&,4'-3(0.$ /2(%&,5 10,000  (0.4 $ 5  55 +3)$! BQLoad#7
  27. copyright Fringe81 Co.,Ltd. BQ Load    Cloud Storage

    gs://bucket/dir/* [gs://bucket/dir/test1.txt, gs://bucket/dir/test2.txt] [gs://bucket/dir1/*, gs://bucket/dir2/*]           Load Load Load BigQuery 56
  28. copyright Fringe81 Co.,Ltd. BQ Load    Cloud Storage

    gs://bucket/dir/* [gs://bucket/dir/test1.txt, gs://bucket/dir/test2.txt] [gs://bucket/dir1/*, gs://bucket/dir2/*]     1   Load Load Load BigQuery 57    
  29. copyright Fringe81 Co.,Ltd. BQ Load    Load 

     l  10,000URI l  10,000,000 l  15TB  58
  30. copyright Fringe81 Co.,Ltd.  *1&%BQ Load1"0#!0 Load *62391!0 .&' Load%0

    59 l <!&/5:79$() 1,000 *,,487+'; 1 -) 487* l 487' 10,000URI+' l 487' 10,000,0006239+' l 487' 15TB+' 1487&/*
  31. copyright Fringe81 Co.,Ltd. l Ver.1 (Streaming Insert) l Ver.2 (BQ

    Load) l Ver.3 (Pull Queue  BQ Load)    60
  32. copyright Fringe81 Co.,Ltd. GCS%),-($#!  Pull Queue BQLoad  BQ

    Load Pull Queue   +- %),-( '-$    Ver.3 (Pull Queue × BQ Load) Cloud Storage BigQuery 61 Pull Queue %),-( '-$  +- '-$ %),-( Cloud Storage  "#&*
  33. copyright Fringe81 Co.,Ltd. GCS%),-($#!  Pull Queue BQLoad  BQ

    Load   Ver.3 (Pull Queue × BQ Load) Cloud Storage BigQuery 62 Pull Queue %),-( '-$  +- '-$ %),-( Cloud Storage  "#&* Pull Queue   +- %),-( '-$ 
  34. copyright Fringe81 Co.,Ltd. Pull Queue &%$#   Queue 

    ! "   Pull Queue &%$3 &%$1 &%$2 Enqueue &%$#  63
  35. copyright Fringe81 Co.,Ltd. Pull Queue    Enqueue Pull

    Queue id: 3 id: 2 id: 1  3(payload: 3)  1(payload: 1)  2(payload: 2) Enqueue 64
  36. copyright Fringe81 Co.,Ltd. Pull Queue lease payload   

      Pull Queue Lease 3(payload: 3) 1(payload: 1) 2(payload: 2) id: 3 id: 2 id: 1 65
  37. copyright Fringe81 Co.,Ltd. Pull Queue   Load *&'-%$ "Load$

    66 l 0#).+- 1,000   (,+/ %!) (,+  l (,+10,000URI l (,+10,000,000*&'- l (,+15TB 1(,+ #
  38. copyright Fringe81 Co.,Ltd. Pull Queue   Load (4017/. ,#%Load".

    67 l :#-3857 &' 1,000 (**265)%9 /+) 265( l 265% 10,000URI)% l 265% 10,000,0004017)% l 265% 15TB)% 1265#-( Pull Queue'' Load (4017 /!$.
  39. copyright Fringe81 Co.,Ltd. GCS%),-($#!  Pull Queue BQLoad Pull Queue

    %),-( '-$  +-   Ver.3 (Pull Queue × BQ Load) Cloud Storage  BQ Load BigQuery 68 '-$ %),-( Cloud Storage  "#&* Pull Queue   +- %),-( '-$ 
  40. copyright Fringe81 Co.,Ltd. Pull Queue × BQ Load  BQ

    Load Cloud Storage Pull Queue Lease id: 3 id: 2 id: 1 Lease   BigQuery 69
  41. copyright Fringe81 Co.,Ltd.  71 l (+* 1 100!5 

    l -(+* #!)&', "  100)&', GAE% BQ Load  %$
  42. copyright Fringe81 Co.,Ltd.  72  %  *0 0

     Streaming Insert  1MB/1, % ,-!) /0% 90  BQ Load  15TB/1+' 1000+'/1$0'- 10000+'/1(.% &#"