Let's BBQ !

3f9c8eddad1654988736396639c8a904?s=47 Youkey
June 13, 2018

Let's BBQ !

Let's BBQ ! With us

3f9c8eddad1654988736396639c8a904?s=128

Youkey

June 13, 2018
Tweet

Transcript

  1. Let’s BBQ 2018/06/13(wed) GCPUG#7 BQLT

  2. すみか:ビッグデータ解析のコンサル会社経営(副業) Cavity LLC. Founder (Principal) GCP歴: 1年半(= BQ暦 ) しゅみ:分析解析での失敗

    / アボカド育てて食う Who am I ? 中田 祐樹 / Yuki Nakata ◦ 本業はGMOクラウド(株)のプリセールス ◦ 組込プログラマからSIerでSEを経て、BigQueryにはまる ◦ 計算社会科学が好きだけど、ほぼ無免許運転
  3. Copyright © 2018 Cavity.LLC All Rights Reserved. 会社概要 ➢社名 :

    Cavity合同会社(英:Cavity.LLC) ➢本社 : 滋賀県東近江市林町 ➢代表社員 : 中田 祐樹(CEO/CTO) ・ 小野 寛徳(COO) ➢設立 : 平成30年4月20日 ➢資本金 : 10円 ➢事業内容 : ビッグデータコンサルティング事業 ・ IaaSを用いたデータ活用コンサルティング ・ イベント運営、コミュニティ形成支援 ・ その他上記付帯事業、各種営業代行
  4. Copyright © 2018 Cavity.LLC All Rights Reserved. イベント告知 起業の科学 勉強会

    [2018/7/20(fri) in GMO yours大阪] https://startup-science.connpass.com/event/88128/ 「起業の科学 スタートアップサ イエンス/田所 雅之 (著)」 ・感銘を受け、読後同じ気持ちに なっている方と話をする会 ・場所はグランフロント大阪B棟 ・のちには各項での勉強会を予定 ・因みにCavity LLC.もここから
  5. 皆さん、 データ可視化・分析してますか?

  6. 本日はBigQueryの話です

  7. やりたかった事 非エンジニアが全くといっていいほど、分析をしない環境 DBって見づらいよね?を言い訳に、分析してもらえない環境 サーバのログで業務部隊に資料を作って貰おうとしたら、拒否 これを打破したい (無理な形であっても)

  8. モチベーションは 無理やり使う

  9. BigQuery とは 高速かつ高スケーラビリティでコスト効率に優れた エンタープライズ向け、フルマネージドデータ ウェアハウス あくまで、データウェアハウス だが、とてつもなく新しい

  10. 出典:Wikipedia How much new ?

  11. ・1575年、長篠の戦いでの信長/家康連合軍 ・日本には当時数千丁ある鉄砲のうち、約3,000丁を集結 ・戦力差2倍で武田軍優勢(ランチェスター戦略では逃げるべき) ・柵/川を活用し、局地戦を集団戦に変えた ・三段撃ちの知恵で圧倒 ・騎馬隊最強の既成概念を破壊した BQは信長鉄砲隊運用ばりに革新的

  12. ・1575年、長篠の戦いでの信長/家康連合軍 ・日本には当時数千丁ある鉄砲のうち、約3,000丁を集結 ・戦力差2倍で武田軍優勢(ランチェスター戦略では逃げるべき) ・柵/川を活用し、局地戦を集団戦に変えた ・三段撃ちの知恵で圧倒 ・騎馬隊最強の既成概念を破壊した エンジニア/非エンジニア双方が使える

  13. データウェアハウス? • データの倉庫で、何らかの判断や分析材料として利用が主目的 • SAP/Oracleなどが代表格で、専門のSEが運用することも多い • データマイニングツールと呼ばれる分析ツールの利用 • データマートと呼ばれる利用目的別のDBを作るケースも多い (顧客情報(CRM)

    + 自社売上管理DB など) • DBとの決定的な違いは ◦ トランザクションレベルでの性能は期待しない ◦ 更新しない(する場合は追加、もしくはコピーで再度マート化 ◦ 削除なし(する場合はデータセットもろとも削除
  14. 正直、難しい プロダクト差がえぐい・・・

  15. あげく、遅い

  16. なので 非エンジニアは 使わない

  17. だから Business Big Query BBQを推進したい

  18. BigQuery は データウェアハウスであり、インフラエンジニア側面では あまり関係ない。ただ、革新的な性能・機能なのでみんな使おう でも、勿体無いのでインフラで使おう 無理やり 注:本LTは【利用だけ】を目的とした最低なパターンです 真似しないでください

  19. DWHのBigQueryをDB的に利用できるか? - Called by Python -

  20. 今回はCloud Shellを使わず、 GCEにBQクライアント環境構築/試行

  21. GCE にBQ クライアント環境構築/試行 【公式ドキュメント】 https://cloud.google.com/bigquery/docs/reference/libraries#client-libraries-install-python 【サマリ】 1. 自分が誰であるか?の認証情報をjsonファイルとして準備 2. GCPクライアントライブラリインストール

    3. bash用に(1)のファイルにexportでパス通す 4. 完成! 先ずは基本形の環境で、サンプルコード通りにやる デーモン化とかはあとで考える
  22. 試運転 公式のサンプル python #ごめなさい、最終行print忘れてます BQ gui

  23. 続きを進める 【公式ドキュメント】 https://cloud.google.com/bigquery/create-simple-app-api 【サマリ】 5. Gitからコードクローン、サンプルアプリの依存性解決実施 6. BQサービスオブジェクト作成 7. クエリ実行

    さすがにオブジェクト作成とクエリ実行を分けても仕方ないので、simple_app.pyをステップ実行する
  24. 試運転2 python BQ gui はい、APIコール数も伸びた

  25. もう少しだけ基礎テスト 【公式ドキュメント】 無し 【サマリ】 8. simple_app.pyをマルチプロセス化 9. 同様にマルチスレッド化 10.SQLをたたくAPIを使おう ちょっとだけ手を入れて、時間掛かる処理が分散できるような下地にしたい

    ただ、中身は面倒なんで替えずにstackoverflowを見るサンプルのまま ロードデータが500MBあるようで、間違ったSELECTの連打は非常に危険なので、先にチェック
  26. 試運転3 マルチプロセス化 とりあえず、BQサービスオブジェクトの再 利用が効いてそう 何かやらかしても親プロセスで纏まるか ただ、サービスオブジェクト の再帰や同時利用可能が 大前提だけど、Google クライアントライブラリ依存

  27. 試運転4 マルチスレッド化 何かBQサービスオブジェクトが別物? そしてpython2なので例の如く、python ジャイアントロックが発動! スレッディングはマルチだが 実質シングル実行の闇 #オブジェクト毎にBQロードデータが違うと金溶ける心配 これは僕のp2好きのせいです

  28. いっぽうSQLは? 先に心配しておくべきでしたが、サンプルコードはベタ書き

  29. APIリファレンス 【公式ドキュメント】 https://cloud.google.com/bigquery/docs/reference/rest/v2/ SQLをパラメータとするため、SELECTやINSERTなどのSQL句単位でAPIがある訳では無い。 あくまでget/postのパラメータ やりたい事 リクエストの文法 REST APIを使えるアプリはいいが、 インフラミドル系には相性良くない

    このままいくとライブラリを作るw
  30. ならば、SQLをどう変換しよう • 使うSQLをリスト化して持たせる • SQLを文法解釈して、自然言語解釈的にSQL変換 • SQLコンバータライブラリ作成 • できないので、SQLでは無くcsv/jsonでinsert 答え

    保守性最悪 どんだけ時間いるねん 本末転倒 標準ライブラリにあった気が・・・ list = [ “SELECT price FROM pricetable” , “SELECT customerID, company FROM customers” , “INSERT INTO Cardinfo (name,cardID,customerID,expiredate,dead)” , “UPDATE cardinfo SET expiredate=20991231 WHERE dead=1” , “DELETE FROM cardinfo” ]
  31. 時間切れ... • SDKのbqクライアントにpsqlみたいなSQLインタプリタが欲しい • BQサービスオブジェクトって同じがいいのか、別がいいのか • SQLコンバータ for BQを作るのは車輪の再発明なので回避 •

    APIメソッドに対してエントリポイント欲しい • サードパーティのライブラリ使えよ • BBQの普及で使うためならCloud DataLabかDataStudio • みなさんプログラムから、どうBQ使ってる? #欲しいばっかりで、ごめんなさい #やってる方いたら、懇親会で話させてくださいー
  32. サードパーティのライブラリは? 【公式ドキュメント】 https://cloud.google.com/bigquery/docs/reference/libraries?hl=ja#client-libraries-install-python https://pandas-gbq.readthedocs.io/en/latest/ pandas-gbqってのが登録されているようだが、 ・何かpython2系のサポートがあやしい ・認証を抜けない・・・ python3系での戦い csv/jsonをでのinsertをプログラムに実装させ、非構造化データをつっこめ! 次回予告

  33. Thank you !