GoogleCloud

Serverless FrameworkでGCS->Cloud Functions->BigQueryの処理を書いてみる

タイトルにもある以下のような処理を簡易的にServerless Frameworkにて実装してみました。 bq load などのコマンドでも実装できそうな内容なのですが、Serverless FrameworkとGoogle Cloudの周りを調べたついでに作ってみました。 前提準備 Serverless Frame…

AirflowのBigQueryValueCheckOperatorがHttpError 404でジョブが見つけられずに止まる

Cloud Composerでトラブルシュートしたので少しマニアックですが残しておきます。 事象 原因 解決策 参考URL 事象 Airflowの BigQueryValueCheckOperator を実行すると以下のエラーとなりました。404なのでBigQueryのジョブが見つからないみたいなエラーなの…

Dataflow+PythonでNFS接続でFilestoreのファイルを読み込む

DataflowでNFS上のテキストファイルを読み込む方法です。 はじめに Filestoreの準備 Filestoreインスタンスの作成 GCEからマウント Dataflow実装 Pipeline(Python) Setup.py ジョブ起動スクリプト例 実行してみる はじめに 最初はOSレベルでマウントできれば…

Cloud DataflowのFlexTemplateを閉域ネットワークで使おうとしたら少しハマった

Cloud DataflowのFlexTemplateをインターネット接続無しの閉域ネットワークにて使おうとしたら、少しハマったので書いておきます。 事象 ジョブの定義 発生するエラー 解決策 配布用アーカイブの作成 Dockerfile修正 Beam Pipelineのオプション修正 参考URL …

新しくクラウドサービスを学ぶ時Infrastructure as Codeから始めてる話

背景 クラウドサービスのキャッチアップにおける課題 サービス間連携が多い 新機能追加のスピードが速い すぐ忘れる 勉強時にインフラコードを書くようにしてみた 以前のステップ 現在のステップ Infrastructure as Codeについて 使っているツール メリット …

2020年の仕事で使った技術を振り返る

2020年の仕事を振り返ってみようと思います。 書いて見返してみると、本当に技術のことばかりですね。仕事と言うより、技術好きのただの趣味みたいな感じなのでしょうがないか。 はじめに 今年仕事で使った技術 AWS Azure GCP Other 全てのプロジェクトにIaC…

DataflowのWriteToBigQueryでRuntimeValueProviderで渡した日付のパーティション分割テーブルを作る

DataflowでRuntimeValueProviderで渡した値を使って、BigQueryのパーティション分割テーブルを作成しようとしたら、WriteToBigQueryでハマったので書いておきます。 課題 対策 参考URL 課題 日付のパーティション分割テーブル自体をWriteToBigQueryで作成す…

DataflowのRunnber Version2でRuntimeValueProviderErrorが発生したのでGCPのサポートに問い合わせてみた

GCPのサポート使ったので、そのメモです。 短期的にはDataflowのRunnerのVersion 2のバグ(というか実装漏れ?)だったので同じ問題で悩んでいる方もググって辿り着けるように残しておきます。 使っているのは$100の開発環境のサポートプランなので、プラン…

GCP Dataflowでapt installが上手くいかない場合のトラブルシュート方法

GCPのCloud DataflowでのOS系のエラーが出た場合の調査方法の例です。 事象 調査 エラー内容 Dockerイメージを特定する Dockerイメージを起動してみる 修正 まとめ 事象 yomon.hatenablog.com こちらの記事で書いたようにJDBCを使ったジョブの、Apache Beam…

GCP Data CatalogをMySQLと連携して3rd Party対応時の機能を追ってみた

以下の記事でAzure Data Catalogでやったような機能追いをGCPのData Catalogでも行ってみました。 yomon.hatenablog.com 2020/08/21時点の内容なのでご注意ください。 GCP Data Catalog 利用するデータ メタデータの登録方法 メタデータの登録手順 データカ…

Google Cloud DataflowでNative Library(*.so)が必要なjarを利用する方法

タイトルの通り、*.soなどの形式で提供されるNative Libraryを必要とするjarファイルをDataflowで使おうとして、ハマったので記録しておきます。 問題となっていたエラー 調査 サンプルコード 問題となっていたエラー まず出たエラーはこちら。このエラーの…

Docker Hubの公式イメージだけ使ってGCPにTerraformにてデプロイ

HashicorpからTerraformのイメージが公式でDocker Hubに公開されています。 https://hub.docker.com/r/hashicorp/terraform こちらを利用してGCPにインフラをデプロイします。その際に認証の部分もDockerの公式イメージだけで対応してみようと思います。 利…

Apache BeamでJavaのObjectをParquet形式でS3とGCSとローカルに出力する

GCPのCloud Dataflowでも使われている、Apache BeamでJavaの内部で持っているデータをParquetに出力するやり方です。 サンプルコードの構成 元にしたMaven ArcheType 利用するPOJO GenericRecordへの変換 出力先の切り替え ローカルに出力してみる GCSに出力…

Google Cloud Certified Professional Cloud DevOps Engineerを取得してきました

Google Cloud Certified Professional Cloud DevOps Engineerを取得してきました。 試験情報 試験内容 ここは勉強しておいた方が良い これでGCP 6冠 試験情報 試験時間 2時間 問題数 50問 言語 英語 模擬試験も、申し込みも英語は英語用のリンクからの方が辿…

BigQueryのQuotasやクエリ課金を別々に制御するためAPIリクエスト用のプロジェクトを分けてみる

はじめに やりたいこと 準備 リクエスト用プロジェクトの割り当て変更 Tableauの場合 課金 参考 はじめに BigQueryの利用をコントロールする方法を調べています。BigQueryのAPIについてQuotas(割り当て)を制御することで、ある程度の制御できます。もう少し…

google-cloud-bigqueryのlist_jobsがUnknownJobを返してきてハマってしまった

小さいハマりなのですが、具体的にはGCP BigQueryのPythonクライアントライブラリである、google-cloud-bigqueryのlist_jobsが手元とDataflowのサーバ側で挙動が違う状態に遭遇しました。 デバッグログを見ながらエラーのポイントは判明しました。list_jobs…

BigQueryの課金情報が含まれるクエリ履歴をテーブルにロードしてSQLで分析できるようにする

追記 今は INFORMATION_SCHEMA を使うことで同じ情報が簡単に取得できます。 SELECT * FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_PROJECT cloud.google.com クエリの履歴情報等を取得したい時はBigQueryのジョブ履歴から情報拾え…

GCPの割り当て(クオータ・Quotas)をAPIから変更する情報見つけたのでやってみる

BigQueryの割り当て(クオータ・Quotas)をAPIから変更する方法を探していましたが、GCP公式ドキュメント見てもコンソールでの作業ばかりしか記載が見つかりません。 cloud.google.com GCPの公式ドキュメントはほとんどの項目でgcloud等で設定するパターンが書…

Cloud SpannerからAvro経由でBigQueryにデータのExport Import

SpannerのデータをBigQueryに取り込む方法です。基本は以下の2つの内容を組み合わせます。 cloud.google.com cloud.google.com 簡単に図にするとこんな感じです。 Dataflowジョブの登録 bqコマンドでAvroをロード Dataflowジョブの登録 今回利用するのはGoo…

Google Cloud SpannerにTableauからJDBC接続する手順

参考URLにも記載した、こちらの記事の方法で接続可能です。 JDBCダウンロード Spanner接続用のアカウント作成 TDCファイル作成(Tableau Datasource Customizatio) Tableau再起動 Spannerをデータソースとして接続 参考URL JDBCダウンロード SpannerにJDBC経…

GCP Cloud ComposerからSendGrid経由でメール通知を行う

Cloud Composerからのメール送信はSendGridを使うのが簡単です。 以下の通り、Googleからも簡単な手順も用意されていますが、画面付きで手順書いてみます。 https://cloud.google.com/composer/docs/how-to/managing/creating?hl=ja#notification SendGrid登…

Python+Cloud DataflowのPubSubストリーミングをGoogle Colaboratory使って試す

Google ColabでGCP使うには GCPの認証 PyPiモジュールのインストール PubSub側準備 左のブラウザ(Publish側) 右のブラウザ(BeamでSubscribe側) Cloud Dataflowで実行 後片付け PubSub削除 Cloud Dataflowのジョブ停止 最後に やりたいことのGIF動画です。…

Cloud Composerが作成できなくなった

ある日、TerraformでCloud Composerのテスト環境構築したら以下のエラーでCloud Composerが立ち上がらなくなりました。 Error: Error waiting to create Environment: Error waiting for Creating Environment: Error code 7, message: Custom service accou…

Cloud Dataflowでシンプルな同期処理のヒント実装

最初はシンプルな差分同期方法の実装を書こうと思ったのですが、どうしても固有要件が入ってしまうので同期処理のヒント実装を書くことにしました。 手元で試せるように、Beam以外の部分はダミー関数としています。データソース取ってくるところと、データ書…

Cloud Dataflowのトラブルシューティングで調べること備忘録

年始早々、Dataflowのエラーでかなりハマりました。 エラー自体は些細なことだったのですが、全然原因わからずに1日中悩んでしましました。 備忘も兼ねて、対応メモ書いておきます。 エラーの事象と対応 事象 開発中のジョブで、データ量的に数分で終わる、…

Pythonで書くDataflowテンプレートでサードパーティ製JDBCドライバを使う

この記事の続きです。 yomon.hatenablog.com 以下にもある通り、今書いている時点ではApache BeamのPython SDKはビルトインでJDBC対応していません。 beam.apache.org PythonでJDBCドライバ使いたかったのはDataflowのPython SDK使ってもJDBC接続使いたかっ…

Cloud DataflowのテンプレートにPythonの外部パッケージを利用する

Cloud Dataflow + Python で作るテンプレートを登録する際に、pipでインストール可能なPyPiなどの外部パッケージをどうやって組み込むか調べました。 requirements.txtでpypi等の外部パッケージ使う方法 設定例 テンプレート作成 setup.pyでローカルパッケー…

Cloud ComposerからDataflowTemplateOperatorでwordcountジョブを実行する

Cloud Composer(Airflow)からDataflowTemplateOperatorの使い方がわからなかったので調べました。 Dataflowテンプレート登録 コード作成 コンパイル+アップロード Cloud ComposerのDAG作成 DAG定義スクリプト作成 AirflowのVariables設定 DAGファイルのイン…

PandasのデータをpyarrowでParquet変換してGCS(Google Cloud Storage)にアップロード

タイトルの通りです。PandasのDataframeをpyarrowでParquetに変換して、そのままGCSにアップロードしています。 スクリプト こんな形で実行可能です。ファイルを経由しないでBufferから、そのままアップロードしています。 import pandas as pd import pyarr…

Azure Table StorageのデータをCloud Dataflowを使ってBigQueryに挿入する

Azure Table StorageのデータをCloud Dataflow (Apache Beam)から扱ってみたのでメモ。 対象のAzure Table Storage 対象としたTable Storageの中身です。mytable という名前にしました。このデータをDataflowを使ってBigQueryに挿入してみます。 準備 デー…