Glue DynamicFrameでParquet変換におけるDecimalの扱い注意点

金額計算などで利用する固定小数点数 decimal をGlueで扱う場合の注意点を書きます。 GlueのGUIでそのまま設定すると、decimalにはなるのですが、 decimal(10,2) という型に固定されてしまうといった落とし穴もありますので、そのあたりも。 例として以下のC…

Redshift Spectrum 用の外部スキーマ上のテーブル定義を確認する

Redshfit SpectrumでDESCや \d 、SHOW CREATE TABLEなどで確認するクエリのメモ。 SELECT * FROM SVV_EXTERNAL_COLUMNS WHERE schemaname = '外部スキーマ名' AND tablename = 'テーブル名'; +-------------------------------+-------------+--------------…

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

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

PandasのDataFrameを使ってElasticsearchにデータを投入

PandasのDataFrameをそのままElasticsearchに入れた方法書きます。 元データ準備 データの前処理 Elasticsearchへの接続確認 Elasticsearchへインデックスのスキーマテンプレートの定義 Elasticsearchにデータ投入 確認 参考URL 元データ準備 CSVのデータな…

AWS Glueで変更のあったパーティション配下だけS3を部分更新したい

やりたいこと 準備 テストデータ生成 S3にアップロード ETLジョブ 部分更新のケースを試してみる 課題① ジョブブックマーク有効化時の再実行 課題① の対策 課題 ② DynamicFrameはAppendしかできない 課題②への対策 課題②への対策1 直接パーティションだけを…

PySparkでOpen Distro for Elasticsearchにデータを投入

タイトルの件、作業メモ。 AWSが出してきたOpen Distro for ElasticsearchにPySpark使ってデータを投入する部分を下調べしたので残しておきます。 利用するデータ Open Distro for Elasticsearchの起動 PySpark準備 ElasticSearchに投入 参考URL Open Distro…

Windowsのinode的情報BY_HANDLE_FILE_INFORMATIONを取得するPowerShellスクリプト

Windowsでもinode的なところを調べたかったのですが調べてみると、 stackoverflow.com Open both files with CreateFile, call GetFileInformationByHandle for both, and compare dwVolumeSerialNumber, nFileIndexLow, nFileIndexHigh. If all three are e…

EC2のWindows上にpyspark+JupyterでS3上のデータ扱うための開発環境を作る

EC2(Windows)にpyspark構築してS3の情報取得するところまでやる機会があったので情報残しておきます。 環境変数設定 各種ランタイムインストール Javaのインストール Python3.7.2インストール Spark インストール Sparkダウンロード 7zipでgzipを解凍 hadoop…

WindowsにFluentdをインストールしてS3にデータ転送して、管理用の設定も追加

WindowsにFluentdを入れる機会があったのでまとめておきます。 td-agent(Fluentd)インストール td-agentダウンロード td-agentインストール プラグインのインストール ディレクトリ 設定例 設定ファイルの退避 設定ファイル Append用 Update用 Monitor用 AWS…

LambdaのLayer機能活用してpandas,pyarrow,s3fs使ってParquet変換する簡易ETL処理を実装する

AWS

小さなファイルのETLにGlueを使うのがもったいなかったので、Pandasやpyarrowで実装しました。 Lambda Layerにpandasとpyarrowを追加 Layerに登録するパッケージを作成 パッケージをアップロード Lambdaのコード エラー対応 参考 Lambda Layerにpandasとpyar…

EC2からAthenaへのJDBC接続テストするためのDockerイメージ作った

色々な環境でIAM権限等のテストしている作業の中で、タイトルのイメージ作成したので書いておきます。 パラメータ環境変数 必須環境変数 環境変数名 説明 REGION AWS Region SQL Athenaで実行されるSQL OUTPUT_LOCATION Athenaの実行結果が格納されるS3バケ…

Athenaを使ってS3上のJSONを変換・パーティショニングしてParquet出力してみる

S3上のJSONデータをAthenaを利用してParquetに変換してみます。 使うのはこの話です。 aws.amazon.com テストデータ生成 日付列をパーティションに利用 Parquet+パーティション分割して出力 カタログへパーティション追加 所感 参考URL テストデータ生成 こ…

Windowsで複数のChromeシークレットウィンドウを開き複数の認証情報ブラウザを同時に使う

複数の認証情報で開いたブラウザを並べながらテストをしているときなどは、複数のシークレットウィンドウが欲しくなります。 AWSのクロスアカウントの検証とか。 シークレットモードのウィンドウが使うワークスペースを準備します。シークレットウィンドウ分…

達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ を読みました

この本を読みました。 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS)作者:ミック翔泳社Amazon 目次 1部 魔法のSQL 2部 リレーショナルデータベースの世界 自分のレベルと書籍のレベル 自分のレベル 書籍のレベル サンプル…

Apache DrillでAWSのDBRレポートCSVファイルをParquet変換して分析してみる

DBR(Detailed Billing Report with Resources and Tags)のCSVを分析しようとググってみたら以下のリポジトリ見つけました。 github.com 中身ざっと読んでみると以下のような感じに見えます。 ローカルにDBRダウンロード DBRのCSVをParquetに変換(Python+Apa…