bq_sushi#7での発表資料
copyright Fringe81 Co.,Ltd.GAEBQ LoadFringe81 1
View Slide
copyright Fringe81 Co.,Ltd.l (Hiroki Fujino)l @Fringe81l l 2
copyright Fringe81 Co.,Ltd. / Ø Ø l GAE" l BQ Loadl #!l GAETaskQueue 3
copyright Fringe81 Co.,Ltd. 4
copyright Fringe81 Co.,Ltd.Columval (2017/11~)l SaaSl ETL5
copyright Fringe81 Co.,Ltd.Columva6l (2017/11~)l SaaSl ETLColumva GAEBQGCP
copyright Fringe81 Co.,Ltd. App Engine Big Query App Engine 7/
copyright Fringe81 Co.,Ltd.lStandard EnvironmentlPaaSl lJava8/Scalal8 App Engine Big Query App Engine/
copyright Fringe81 Co.,Ltd.ll&"#l&!%lAPI l $9 App Engine Big Query App Engine/
copyright Fringe81 Co.,Ltd.BigQueryBig QueryIn Out10
copyright Fringe81 Co.,Ltd.BigQuerylSQLlBig QueryIn Out11
copyright Fringe81 Co.,Ltd.BigQueryl Big QueryIn Out12
copyright Fringe81 Co.,Ltd.13
copyright Fringe81 Co.,Ltd.BQ 14
copyright Fringe81 Co.,Ltd. 15
copyright Fringe81 Co.,Ltd.BigQuery 16
copyright Fringe81 Co.,Ltd. 17 BigQuery
copyright Fringe81 Co.,Ltd. 18%#" TaskQueue GAE SE& !$60GAE
copyright Fringe81 Co.,Ltd.App Engine Push Queue Push QueueApp Engine App Engine1 322Enqueue Push Queue GAE2Push3Enqueue3Push19
copyright Fringe81 Co.,Ltd.App Engine Push Queue"! EnqueueGAE"! #$Push Queue 20
copyright Fringe81 Co.,Ltd.App Engine Push Queue*)'#EnqueueGAE *)'#&,.!Push Queue # "! )(.-$%+21
copyright Fringe81 Co.,Ltd. BQ 22BigQuery
copyright Fringe81 Co.,Ltd. !"# 23
copyright Fringe81 Co.,Ltd. l Ver.1 (Streaming Insert)l Ver.2 (BQ Load)l Ver.3 (Pull Queue BQ Load)24
copyright Fringe81 Co.,Ltd.l Ver.1 (Streaming Insert)l Ver.2 (BQ Load)l Ver.3 (Pull Queue BQ Load) 25
copyright Fringe81 Co.,Ltd.Streaming InsertBQ Streaming Insert Ver.1(Streaming Insert)26BigQuery
copyright Fringe81 Co.,Ltd.Streaming Insertl BigQuery l $0.01/200MBBigQueryStreaming Insert Table Userid INTEGERname STRING27User(id: Long, name: String)
copyright Fringe81 Co.,Ltd.28
copyright Fringe81 Co.,Ltd.BQ BQ 29
copyright Fringe81 Co.,Ltd.BQ!" !" !" !" BQ!" !" ##30
copyright Fringe81 Co.,Ltd.Streaming Insert SELECT DELETEBigQuerySELECTDELETEStreaming Insert31
copyright Fringe81 Co.,Ltd.Streaming Insertstreaming insert BigTableselect BigTable [https://cloud.google.com/blog/big-data/2017/06/life-of-a-bigquery-streaming-insert]32
copyright Fringe81 Co.,Ltd.Streaming Insertstreaming insert # BigTable!"selectBigTable!" 33deleteupdate 90[https://cloud.google.com/blog/big-data/2017/06/life-of-a-bigquery-streaming-insert]
copyright Fringe81 Co.,Ltd.Streaming Insert34l%*$(1("!#& 1MB)l()$ '%*$ %*$
copyright Fringe81 Co.,Ltd.Streaming Insert 9035
copyright Fringe81 Co.,Ltd.Streaming Insert90 BQ 36
copyright Fringe81 Co.,Ltd.l Ver.1 (Streaming Insert)l Ver.2 (BQ Load)l Ver.3 (Pull Queue BQ Load) 37
copyright Fringe81 Co.,Ltd.GCS BQ LoadBQ!! !Cloud Storage Ver.2 (BQ Load) BQ LoadBigQuery38
copyright Fringe81 Co.,Ltd.GCS BQ LoadBQ!s Ver.2 (BQ Load)39! !Cloud Storage BQ LoadBigQuery
copyright Fringe81 Co.,Ltd.BQ Load40lGoogle lSDK (Java, Python, Go…)
copyright Fringe81 Co.,Ltd.BQ LoadCSVJSONBigQueryLoad 1BQ Load41Table Userid INTEGERname STRINGid, name1, “hoge”2, “fuga”{“id”: 1, “name”: “hoge”}{“id”: 2, “name”: “fuga”}
copyright Fringe81 Co.,Ltd.BQ LoadGCP Cloud StorageCloud DataflowLoadLoadBigQuery42
copyright Fringe81 Co.,Ltd.GCS BQ LoadBQ! Ver.2 (BQ Load)43! !Cloud Storage BQ LoadBigQuery
copyright Fringe81 Co.,Ltd.Google Cloud Storage!, )$(./#GCS <=> BQ'/% "$&+'/%*- GCSJSON*-44
copyright Fringe81 Co.,Ltd.GCS => BQCloud StorageBQ Loadhoge1.json hoge_tablehoge2.jsonhoge3.jsonhoge_tablehoge_tableBigQuery45
copyright Fringe81 Co.,Ltd.BQ Loadl Streaming Insert%BQ Load%l -.,+* & )l $-.,+ *)! )l ACID +u *-.,% #)'#")(Atomicity)u -.,%)("(Consistency)46
copyright Fringe81 Co.,Ltd. 47
copyright Fringe81 Co.,Ltd.BQ Loaderror=BigQueryError{reason=rateLimitExceeded,location=table.write, message=Exceeded rate limits:too many table update operations for this table…48
copyright Fringe81 Co.,Ltd.rateLimitExceeded49
copyright Fringe81 Co.,Ltd.GCS BQ LoadBQ % Ver.2 (BQ Load)Load 50%"$%!Cloud StorageBQ LoadBigQuery#
copyright Fringe81 Co.,Ltd.BQ Load BQ Load 51
copyright Fringe81 Co.,Ltd.BQ Loadl 15'"%10 $"l *'"% 1,000 $"( )l *#& (!'$"#& )10,000 $"( )52
copyright Fringe81 Co.,Ltd.BQ Loadl 15)0836!10"%%/53$l ;)0836! 1,000 "%%/53$9+&)l ;)47/,-19.28/53+"47/,-1:!10,000 "%%/53$9+&:53 "#"+(Load*'!
copyright Fringe81 Co.,Ltd.BQ Loadl 15$-614 10 ""+31!l 9$-614 1,000 ""+31!7'#)l 9$25+()/7*06+31' 25+()/810,000 ""+31!7'#8 54.6,&%
copyright Fringe81 Co.,Ltd.BQ Loadl 15"*3.110 (0.l 6"*3.1 1,000 (0.4 $ )l 6"/2(%&,4'-3(0.$/2(%&,510,000 (0.4 $ 555+3)$!BQLoad#7
copyright Fringe81 Co.,Ltd.BQ Load Cloud Storagegs://bucket/dir/*[gs://bucket/dir/test1.txt,gs://bucket/dir/test2.txt][gs://bucket/dir1/*,gs://bucket/dir2/*] LoadLoadLoadBigQuery56
copyright Fringe81 Co.,Ltd.BQ Load Cloud Storagegs://bucket/dir/*[gs://bucket/dir/test1.txt,gs://bucket/dir/test2.txt][gs://bucket/dir1/*,gs://bucket/dir2/*] 1 LoadLoadLoadBigQuery57
copyright Fringe81 Co.,Ltd.BQ Load Load l 10,000URIl 10,000,000l 15TB58
copyright Fringe81 Co.,Ltd.*1&%BQ Load1"0#!0Load*62391!0 .&' Load%059l !&/5:79$() 1,000 *,,487+';1 -)487*l 487'10,000URI+'l 487'10,000,0006239+'l 487'15TB+'1487&/*
copyright Fringe81 Co.,Ltd.l Ver.1 (Streaming Insert)l Ver.2 (BQ Load)l Ver.3 (Pull Queue BQ Load) 60
copyright Fringe81 Co.,Ltd.GCS%),-($#! Pull QueueBQLoadBQ LoadPull Queue +-%),-('-$ Ver.3(Pull Queue × BQ Load)Cloud Storage BigQuery61Pull Queue%),-('-$ +-'-$%),-(Cloud Storage "#&*
copyright Fringe81 Co.,Ltd.GCS%),-($#! Pull QueueBQLoadBQ Load Ver.3(Pull Queue × BQ Load)Cloud Storage BigQuery62Pull Queue%),-('-$ +-'-$%),-(Cloud Storage "#&*Pull Queue +-%),-('-$
copyright Fringe81 Co.,Ltd.Pull Queue&%$# Queue !" Pull Queue&%$3&%$1&%$2Enqueue&%$#63
copyright Fringe81 Co.,Ltd.Pull QueueEnqueuePull Queueid: 3id: 2id: 1 3(payload: 3) 1(payload: 1) 2(payload: 2)Enqueue64
copyright Fringe81 Co.,Ltd.Pull Queueleasepayload Pull QueueLease3(payload: 3)1(payload: 1)2(payload: 2)id: 3id: 2id: 165
copyright Fringe81 Co.,Ltd.Pull Queue Load *&'-%$"Load$66l 0#).+- 1,000 (,+/%!)(,+ l (,+10,000URIl (,+10,000,000*&'-l (,+15TB1(,+#
copyright Fringe81 Co.,Ltd.Pull Queue Load(4017/. ,#%Load".67l :#-3857 &' 1,000 (**265)%9/+)265(l 265%10,000URI)%l 265%10,000,0004017)%l 265%15TB)%1265#-(Pull Queue''Load(4017/!$.
copyright Fringe81 Co.,Ltd.GCS%),-($#! Pull QueueBQLoadPull Queue%),-('-$ +- Ver.3(Pull Queue × BQ Load)Cloud StorageBQ LoadBigQuery68'-$%),-(Cloud Storage "#&*Pull Queue +-%),-('-$
copyright Fringe81 Co.,Ltd.Pull Queue × BQ Load BQ LoadCloud StoragePull QueueLeaseid: 3id: 2id: 1 Lease BigQuery69
copyright Fringe81 Co.,Ltd.70l 1100 5l 100
copyright Fringe81 Co.,Ltd.71l (+*1 100!5 l -(+* #!)&'," 100)&',GAE% BQ Load%$
copyright Fringe81 Co.,Ltd.72 % *0 0 StreamingInsert 1MB/1, % ,-!) /0%90BQ Load 15TB/1+'1000+'/1$0'-10000+'/1(.%"
copyright Fringe81 Co.,Ltd.l BQ Load *$%-#l GAE+',.-#"!BQ Load#!l GAE&()73
copyright Fringe81 Co.,Ltd.lGAE+TQ ,Dataflow 74
copyright Fringe81 Co.,Ltd. 75