新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

GCP

BigQueryの少し凝った使い方メモ(etc)

普段Google BigQueryでは簡単な集計SQLしか使っていないのですが、集計SQL以外にも色々便利な機能があります。 ただ、使用頻度が高くないので、いざ使おうとするとマニュアルを探すところから始まるので、自分用に簡単な使い方をまとめておこうと思います。 …

Firestoreを軽量データベースとして使ってみる

GCP関連でプログラムを作っていて、ちょっとしたデータを保存したいことがありました。 データベースを立てるほど大げさなデータでもないし、データ間で結合クエリを書くこともなさそうな単発のデータでした。 そもそも、データベースを立てると、使っていな…

BigQueryの少し凝った使い方メモ(スケジュールされたクエリ)

普段Google BigQueryでは簡単な集計SQLしか使っていないのですが、集計SQL以外にも色々便利な機能があります。 ただ、使用頻度が高くないので、いざ使おうとするとマニュアルを探すところから始まるので、自分用に簡単な使い方をまとめておこうと思います。 …

BigQueryの少し凝った使い方メモ(プログラミング)

普段Google BigQueryでは簡単な集計SQLしか使っていないのですが、集計SQL以外にも色々便利な機能があります。 ただ、使用頻度が高くないので、いざ使おうとするとマニュアルを探すところから始まるので、自分用に簡単な使い方をまとめておこうと思います。 …

BigQueryの少し凝った使い方メモ(テーブル作成・データ更新)

普段Google BigQueryでは簡単な集計SQLしか使っていないのですが、集計SQL以外にも色々便利な機能があります。 ただ、使用頻度が高くないので、いざ使おうとするとマニュアルを探すところから始まるので、自分用に簡単な使い方をまとめておこうと思います。 …

BigQueryの少し凝った使い方メモ(ビュー・マテリアライズドビュー・テーブル関数)

普段Google BigQueryでは簡単な集計SQLしか使っていないのですが、集計SQL以外にも色々便利な機能があります。 ただ、使用頻度が高くないので、いざ使おうとするとマニュアルを探すところから始まるので、自分用に簡単な使い方をまとめておこうと思います。 …

Google Cloud Platform でサービスアカウントを使ってREST APIを呼び出す方法

普段GCPの操作は、コマンドラインツールかクライアントライブラリ経由で行えるので、REST APIを直接呼び出すことはありませんでした。 今GCP Batchというサービスを試しているのですが、まだプレビュー段階でコマンドラインツールやクライアントライブラリが…

BigQueryの定額料金を見積もってみる

Google BigQueryは従量課金で比較的安価なため、今まで料金のことはあまり気にせず使っていました。 ビッグデータ分析は、今まで推測するしかなかった事柄が、実際に数値として出せるようになり画期的でした。 その便利さが周知されるようになると、BigQuery…

Google Professional Data Engineer認定資格 合格体験記

Google Professional Data Engineer認定資格の試験を受ける機会があり、無事合格できました! Google Professional Data Engineer認定資格に関する情報は少ないので、興味ある方向けに合格体験記を書こうと思います。 Google Professional Data Engineer認定…

ブラウザだけでVisual Studio Codeを動かしたくて、VSCodeもどきのTheiaを使って、ブラウザ上でコーディング・ターミナルできる環境を構築してみる

複数のPCを使っていて、それぞれのPCに Visual Studio Code(VSCode)をインストールしているのですが、ブラウザ上でVSCodeが使えれば、セットアップ不要でいつでも同じ環境が使えて楽なのになぁと思うことがよくあります。 GitHub Codespacesが正にそういっ…

Google Firebase と AWS Amplify の両方を使ってみた感想

思い立ったらサクッとSPAサイトが作れたらいいなぁと思っていたのですが、Reactはちょっとしたサイトを作るにも大掛かりになってしまうので諦めていました。 しかし、最近ReactのRecoilを触り始めたのですが、Recoilを使うと、Reactも随分シンプルに書けるよ…

GCPを使って、できるだけ楽してGo言語のgoroutineのリークを監視する

ゴルーチン リーク Go言語はめちゃめちゃ簡単にゴルーチン(スレッドのようなもの)を作れるのが魅力です。 あまりにも簡単なので、あまり深く考えずゴルーチンを生成していたのですが、ゴルーチンはメインフローとは別に切り離されて実行されるので、デッド…

Google Kubernetes Engine(GKE)で、コンテナでエラーが発生したらSlackやメールに通知する方法

GCPのKubernetes(GKE)で、プログラムでエラーが発生したら、Slackやメールなどの外部に通知する方法です。 自分でエラー検知の仕組みを実装しなくても、GCPの設定のみで可能です。 大まかな仕組み プログラムでエラーが発生した時に、プログラムから標準エ…

kubectlで複数のクラスターを切り替える方法

Kubernetesの新しいクラスターを追加したので、kubectlコマンドで切り替えられるように設定しました。 一度設定してしまうといじることはなく、このままだとやり方忘れてしまうので、自分用に設定方法をメモしておきます。 仕組み Kubernetesを操作するにはk…

Google Cloud SDK(gcloud)で複数アカウント・プロジェクトを切り替える方法

Google Cloud Platformに新しいプロジェクトを追加したので、Google Cloud SDK(gcloud CLI)でプロジェクトを切り替えられるように設定しました。 一度設定してしまうといじることはなく、このままだとやり方忘れてしまうので、自分用に設定方法をメモして…

Dockerfileのタグでlatestは使っちゃいけないなぁと思った

定期的に、AWS S3のファイルを、Google Cloud Storageにコピーしています。 コピーのやり方は色々あるのですが、ここではGoogle Cloud SDKのgsutilコマンドを使っていて、 Google Cloud SDKは、Alpine LinuxのDockerイメージを使用しています。 しかし、ある…

Google BigQueryのNode.js SDKで、Cloud Storageの複数のファイルをまとめてロードする方法

Google BigQueryに、Google Cloud Storageのファイルをロードする時、複数のファイルをまとめてロードすることができます。 しかし、それをGoogle BigQueryのNode.js SDKでやろうとしてハマったので、そのメモ書きです。 概要および問題点 table.createLoadJ…

Google Cloud Storageでファイルとディレクトリを区別する方法

Google Cloud Storageで、サブディレクトリ内のファイル一覧を取得して、それらのファイルの処理をしようとしました。 しかし、ファイルがおかしいとエラーが出るので見てみたら、取得したファイル一覧に、サブディレクトリが含まれていました。 原因 前に勘…

Google Cloud Storageのサブディレクトリ一覧をNode.jsで取得する方法

以前、Google Cloud Storageのサブディレクトリ一覧を、GCP Pyhtonライブラリを使って取得したのですが、そのNode.jsバージョンです。 Pythonバージョンはこちら www.kwbtblog.com 手順 GCP Node.js SDKのドキュメントにサンプルがあるので親切ですね。 http…

クラウドを利用するということは、常時メンテコストが発生するということ

Google Cloud Platformからメールが来ていました。 Gooble Cloud Functionsで、当初作ったFunctionのNode.jsのバージョンが6だったのですが、今回バージョン6のサービスが終わるので、そのバージョンアップ要請のメールでした。 薄々意識はしていたのですが…

Spark(Google Dataproc)からAWS S3にアクセスする方法

Spark(Google Dataproc)から、AWS S3にアクセスする方法です。 手順 Spark設定 下記のSpark・Haddopの設定をすると、SparkからAWS S3ファイルの読み書きができるようになります。 Sparkに下記AWS関連のjarファイルを読み込みます aws-java-sdk-bundle-xxxx…

Spark(Google Dataproc)からMicrosoft SQL Server(Azure SQL Database)にアクセスする方法

Spark(Google Dataproc)から、Microsoft SQL Server(Azure Database)にアクセスする方法です。 手順 Spark設定 下記のSparkの設定をすると、SparkからSQL Serverのデータの読み書きができるようになります。 MS SQL ServerのJDBCのjarファイルをダウンロ…

Spark(Google Dataproc)からMySQLにアクセスする方法

Spark(Google Dataproc)から、MySQLにアクセスする方法です。 JDBCを使ってアクセスするので、PostgreSQL等、他のRDBにも応用可能です。 手順 Spark設定 下記のSparkの設定をすると、SparkからMySQLのデータの読み書きができるようになります。 MySQLのJDB…

MySQLのデータベースを、スキーマレスでパーティショニングしながらBigQueryにロードしてみる

BigQueryはデータ量が膨大でも、インフラの事は全く(本当に全く)気にしなくてよく、しかも早くて安いので、 データは全てBigQueryに入れてしまって、全部BigQueryで処理したくなってしまいます。 そんな訳で、MySQLのデータベースをまるまるBigQueryにロー…

Google Cloud Storageのサブディレクトリ一覧をPythonで取得する方法

Google Cloud Storageのサブディレクトリ一覧を、GCP Pythonライブラリを使って取得したかったのですが、 ハマったので、その経緯と方法のメモ書きです。 他の言語のライブラリも、Pythonライブラリ同様APIラッパーなので、応用可能かと思います。 NG 例 最…

Kubernetes(GKE)でLet's Encryptを自動更新する方法(ワイルドカード証明書)

Kubernetes(GKE)でLet's Encryptを自動更新するのに「cert-manager」+DNS認証を使うと、サービス側での処理なしで自動更新できて便利だったので、その導入手順メモです。 以前にも導入メモを書いたのですが、手順が変わっていたので、ワイルドカード証明書…

Google BigQueryでカレンダーテーブルを作る方法

日付で飛び飛びなデータを集計する時には、カレンダーテーブルが欲しくなることがあります。 Google BigQueryでは下記でカレンダーテーブルを作成できます。 「GENERATE_DATE_ARRAY()」でカレンダー配列が作れるので、「UNNEST()」で配列を行に展開してテー…

Kubernetes(GKE)でLet's Encryptを自動更新する方法

追記 手順が変わっていたので、ワイルドカード証明書の取得方法と合わせて、別記事に書き直しました。 www.kwbtblog.com 追記ここまで(以下元記事) Kubernetes(GKE)でLet's Encryptを自動更新するのに「cert-manager」+DNS認証を使うと、サービス側での…

Kubernetes(GKE)でHTTPS通信する方法(Ingress編)

Google Cloud Platform のKubernetes(GKE)でHTTPS通信する方法についてのまとめです。 はじめに Kubernetesが外部と通信できるようにするには Serviceによる方法 Ingressによる方法 の2通りのやり方があります。 Serviceによる方法では、外部IPはGCPのロード…

Google Cloud Platform でサービスアカウントをプロジェクトをまたいで使う方法

Google Cloud Platform(GCP)にはユーザーアカウントとサービスアカウントの2種類のアカウントがあります。 ユーザーアカウントはGmailでおなじみのGoogleアカウントのことで、複数の任意のプロジェクトに属することができます。一方サービスアカウントは…