Python

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動画です。…

PythonでJDBC使ってSQL ServerクエリしていたらUnicodeEncodeErrorにぶち当たった

時々見るエラーですが、大きなテーブルを読み込むETL処理で出た時などは、だいぶ辛い気分になります。 UnicodeEncodeError: 'utf-8' codec can't encode characters in position 0-1: surrogates not allowed SQLで該当を探す SparkやBeamを使って大規模デー…

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接続使いたかっ…

PythonでAzure SQL databaseにJDBC接続してみる

利用するモジュール SQL Server用のJDBC Driverダウンロード Pythonコード 既知のエラー 関連 利用するモジュール JDBCを使うためにこちらのモジュールを利用します。 github.com $ pip install JayDeBeApi SQL Server用のJDBC Driverダウンロード SQL Serve…

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…

PandasとNumpyで大きなDataframeのデータを生成する方法

タイトルの通り、Pandas使ったちょっとしたテストで「それなりに」大きなDataframeを作りたい場合の例です。 import pandas as pd import numpy as np import datetime row_num = 10000000 string_values = ['Python', 'Ruby', 'Java', 'JavaScript', 'PHP',…

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

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

Azure Table Storageをpandas+pyarrowでParquet変換してBLOB側にアップロード

BeeX Advent Calendar 2019の12/6の記事です。空いてたので滑り込みです。 Azure Table Storageですが、対応しているツールも少なく、なかなか扱いずらいので、Pandasに読み込んで、Parquet形式に変更する方法を調べました。 対象 対象としたTable Storageの…

Apache AirflowでAzure BLOB Storageのオブジェクトを監視してワークフローをトリガする

AirflowにはAzureのパッケージが存在しています。 pip install 'apache-airflow[azure]' その辺りを使って、Azure Blob Storageへオブジェクトがアップロードしたことを検知して、ワークフローを流したいと思いました。 モジュールとしては以下のモジュール…

CLI でGoogle Cloud Functions + Serverless Framework開発環境を構築

Google Cloud FunctionsをServerless Frameworkでデプロイできる環境を作りたい場合、以下の公式ドキュメントに手法が載っています。 Serverless - Google Cloud Functions Documentation ただ、特に権限周りでGUIでの操作が面倒なので、CLI操作に変換して書…

LambdaでElasticsearch Serviceの手動スナップショットを取得する仕組みをCFnで一括デプロイ

Amazon Elasticsearch Service (AES) で手動スナップショット取得の仕組みをCloudformationで一気にデプロイします。かつCurator使って古いスナップショットは自動的に削除する設定になっています。スナップショット取るだけで意外に大変です。 Pythonスクリ…

プライベートなPyPIをpypiserverとDockerで簡単に作成する

イントラネット環境からのみアクセス可能なPyPI( The Python Package Index)を作りたい場合。 Dockerとpypiserverを利用すれば、簡単にプライベートなPyPIが作れます。 github.com プライベートのPyPIを構築 プライベートPyPIにパッケージを登録してみる プ…

Pythonスクリプト内からCuratorを使ってElasticsearchのIndexを操作する

Curatorは通常、YAML形式の定義ファイルを使ってコマンドラインから操作することが多いと思いますが、PythonからAPIを経由で操作することも可能です。 基本的な操作のざっくりコードですが例を書きます。 準備 Elasticsearchクライアントの生成 CuratorのImp…

PythonでSAPユーザ登録スクリプトを作ってみた

今回はタイトルの通り、PythonでSAPユーザ登録用のBAPI汎用モジュールを実行するスクリプトを作ってみました。 前にPowershellで作ってみた時の記事がこれです。 【PowerShell】SAPユーザ登録用のPowerShellコマンドレットを作ってみました - YOMON8.NET 即…

PythonからSAP処理を呼び出してみる

今回はPythonからSAPのABAP汎用モジュールをRFC経由で呼び出してみます。 検証環境構築とかしている時にいちいちSAPGUIからログオンしてマウス操作で作業するのが面倒な作業をどうにかしたいと思ってます。 JavaやC#を使えば簡単にGUI使わないSAP接続処理書…