Category:

BigQueryのpython client(google-cloud-bigquery)の使い方

BigQueryのpython client(google-cloud-bigquery)の使い方をメモっていきます。 インストール サービスアカウントキーファイルを環境変数に設定 こちらを参考に、サービスアカウント+キーファイルを作成し、そのキーファイルのパスを環境変数に設定します。 export GOOGLE_APPLICATION_CREDENTIALS="/hoge/fuga/key_file.json" ライブラリインストール pip install google-cloud-bigquery クライアント生成 from google.cloud.bigquery import Client client: Client = Client() # 環境変数 GOOGLE_APPLICATION_CREDENTIALSが設定されている前提。引数で渡すこともできる Continue Reading

Posted On :
Category:

pythonにおける親/兄弟階層のモジュールimportの方法

pythonでは、デフォルトでは実行フォルダおよびその配下のフォルダだけがモジュール検索対象のパスとなっています。 そのため、ある程度プロジェクトが大きくなってきて、共通モジュールを特定のフォルダに整理してまとめたりすると、パスが通らず困ったりします。 今回は、兄弟階層の共通モジュールのimport方法を説明します(もちろん親階層でも同じ方法で対応できます)。 はじめに フォルダ構成 今回は以下のようなフォルダ構成でmain.pyにlogger.pyをimportする方法について解説します。 ┣ module ┃ ┗ logger.py ┗ business   ┗ main.py logger.pyの実装 import logging formatter = '%(asctime)s [%(levelname)s] %(message)s' logging.basic Continue Reading

Posted On :
Category:

pythonの型ヒント

pythonは動的型付け言語ですが、バージョン3.5で型ヒントが導入されたことにより、静的型付け言語っぽく開発することができるようになりました。 ただし、公式ページ にも以下のように書いてあるように、 Python ランタイムは、関数や変数の型アノテーションを強制しません。 型アノテーションは、型チェッカー、IDE、linterなどのサードパーティーツールで使われます。 型ヒント自体はあくまでコメントの延長であり動作には一切影響を与えません。型チェッカー、IDE、linterなどのツールによって利用されます。 型ヒントの導入に関してはメリットしかないと思いますので、導入して快適なpython lifeをおくりましょう。 型ヒントのメリット 型ヒントを導入するメリットは3つあると思います。 コードチェック 入力候補の表示 可読性向上 コードチェック 型ヒントの最大のメリットは静的型チェックだ Continue Reading

Posted On :
Category:

UbuntuにJenkinsをインストールして初期設定を行うまで

Ubuntuにjenkinsをインストールする手順を記載します。 基本的には こちら にしたがって作業を進めます。 バージョン Ubuntu: 18.04 Jenkins: 2.190 Javaランタイム: 11 Javaランタイムのインストール Jenkins 2.164 よりJava 11をサポートしているらしいので、Java11をインストールします。 それ以前のバージョンの場合は、Java8をインストールします。 sudo apt-get update sudo apt-get install openjdk-11-jre java –version > openjdk 11.0.4 2019-07-16 Jenkinsインストール wget -q -O – https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key ad Continue Reading

Posted On :
Category:

pythonにおけるローカル環境での環境変数の設定

Twelve-Factor Appがデファクトになりつつある中、pythonのアプリを作る際も、設定はコードから切り離し環境変数に格納することも多いと思います。 staging環境やproduction環境は、service化するなりdocker化するなり、何らかの方法で環境変数を外部から与えると思いますが、ローカル開発環境においてどうやって環境変数を与えるかは結構悩みどころです。 この記事では、その辺を考えてみたいと思います。 考慮ポイント 基本的には上にあるものほど、優先度が高いと考えました。 環境を汚さない(環境変数が残ったままにしない) 環境変数が残ったままになると、別のプログラムを同じterminalで実行して、不正な動作をしたり事故につながる 開発のスピードを落とさない 実装から動作確認までのイテレートが短ければ短いほどよい(環境立ち上げに時間がかかるのは嫌) 運用の手間を増や Continue Reading

Posted On :
Category:

ssh_exchange_identification: Connection closed by remote host エラーの対処

ssh_exchange_identification: Connection closed by remote hostエラーが発生した場合の対処方法をメモっておきます。 まず、ググると以下がヒットしたので、それを試してみました。 ~/.ssh/known_hosts から関連しそうな設定を消す /etc/hosts.allow に接続元IPアドレスを記載する /etc/ssh/sshd_config の MaxStartups の設定をデフォルト値の 10:30:100 から増やす host名やipアドレスが本当にあっているか確認する しかしいずれも解決にはつながらず、途方にくれた私を救ってくれたのは、上司からの Host test-* みたいな共通設定が入ってません?? というエスパー指摘でした。まさにその設定が入っています!! 踏み台サーバ経由で各サーバにsshする必要があるため、 Continue Reading

Posted On :
Category:

BigQueryのTips

BigQuery関係のTipsをまとめていきます。 bqコマンドについては こちら に記載してます。 コストについて こちらを参照するとわかりますが、ストレージコストとクエリコストがあります。 ストレージコストはだいたい想像つくと思うので、ここではクエリコストについて記載します。 認識しておきたいのは以下の3つだと私は思ってます。 コストは、アクセスするデータ量(バイト数)で決まる カラム型DBなので、必要なカラムのデータだけを取得する オプティマイザが優秀なので、最終的に利用するテーブル・カラム以外は処理対象にならない このルールを元に考えると、だいたいコストがどうなるか分かります。 実際にbq query –dry_runでアクセスするデータ量を厳密に確認しつつ以下の表を作りました。 項目 コストへの影響 説明 * 対象テーブルの全カラム分のコストがかかる *を使うとそのテーブルの全 Continue Reading

Posted On :
Category:

Google Apps Script(GAS)のTips

Google Apps Script(GAS)に関するTipsを書きためていきます。 実行中の関数を強制停止する https://script.google.com/home/executions にアクセスして、対象の実行をキャンセルします。 ログ確認 Logger.log()で出力したログはstackdriverに出力されますが、 https://script.google.com/home/executions から確認することができます。 スプレッドシートから値を取得する 1〜最大行数まで2〜3列目の値を取得するケースについて書いてあります。 対象データが多い場合は、getValues()で二次元配列として一括で値を取得するのが鉄則です。 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spr Continue Reading

Posted On :
Category:

GCP CLIのTips

たまに使うと忘れてることが多いので、よく使うコマンドをメモっていきます。 gcloud サービスアカウント設定 # リストアップ gcloud auth list # キーファイルで有効化 gcloud auth activate-service-account –key-file {key_file_json_path} # 有効化とデフォルトプロジェクト設定 gcloud auth activate-service-account –key-file {key_file_json_path} –project {project_name} # サービスアカウントを無効化 gcloud auth activate-service-account {service_account_name} デフォルトプロジェクト設定 # 設定確認 gcloud config list # プロジェ Continue Reading

Posted On :
Category:

DataProc+PySparkのTips

環境変数の利用 DBへの接続情報など環境変数から設定するようにしたいケースが発生しそうなので調査しました。 いずれもドライバプログラム内でしか利用できません。つまりworkerノード(リモート)で利用するためには一旦変数に格納してアプリケーションコード内で参照するような工夫が必要ですのでご注意ください。 方法1:initialization-actionsで自前スクリプトを実行する initialization-actionsで自前のスクリプトを実行して、その中で環境変数を設定するというとても原始的な方法です。この方法だと変数の内容をファイルに記載して、GCSにアップロードしなくてはならないので正直使えないと思っています。 まず、クラスター作成時にinitialization-actionsオプションで指定するスクリプト(initialize.sh)を実装する echo "exp Continue Reading

Posted On :