読者です 読者をやめる 読者になる 読者になる

/var/log/laughingman7743.log

I thought what I'd do was, I'd pretend I was one of those deaf-mutes or should I?

PyAthenaJDBCでRedashのクエリランナー書いてみた

redash-athena-proxy*1を使ってRedashからAthenaにクエリを投げれる環境を作っていたのですが、どうもtimestamp型やdate型の戻り値が日付として上手く認識しない。。。 おそらくproxy側のGSONの日付型のシリアライズ設定の問題かと思われるのですが、調べる…

S3DistCpをリモート実行したい

S3DistCp*1をよく使うのですが、 複数のS3DistCpを実行する場合、クラスタにステップを追加する形だと1ステップづつシーケンシャルに実行され、かなり待たされることになります。 ステップを追加する形ではなく、SSHでリモート実行できると任意のタイミング…

PythonからAmazon AthenaにJDBC接続するラッパー

暇を持て余していたので作ってみました。 バージョン番号は諸事情により1.0.1となってしまいました。(心温かみのある手作業でのリリースはまずい。。。) 既知の問題点 Decimal型をフェッチすると落る ドライバのバグのようです。フォーラムにも上がってまし…

PythonでAmazon Athenaにつなぐ

Amazon Athena*1への接続は現状JDBCしかサポートされていない。。。やっぱりPythonからつなぎたいですよね! PythonからJDBCでつなぐには、Py4J*2やJPype*3あたりを使うと良さそうですが、Py4JはJavaでGatewayServerを作成し、別プロセスで起動しなければな…

ELBのログをLambda、Norikra、Mackerelを使っていい感じに処理する

ELBが結構504を返したりしていたりするので、Lambda、Norikra、Mackerelを使ってモニタリングできるように処理してみました。 S3 -> Norikra ELBは適当に5分ぐらいの間隔でS3にログを出力するようにしておき、 S3のオブジェクト作成イベントをトリガに起動、…

EMR 4.4.0でJSON SerDe

HiveでJSON SerDeであれば rcongiu/Hive-JSON-Serde*1 を使うのが一般的かと思われますが、 EMR 4.4.0からHCatalogが使えるようになっているので*2、 HCatalogのJSON SerDe*3を使うこともできます。 /usr/lib/hive-hcatalog/share/hcatalog/ 以下にJarがある…

AmazonECSデプロイスクリプトをPythonで再実装してみた

シェルスクリプト*1つらいってことでPythonで再実装してみました。基本的な使い方は変わらないです。(古いタスクが終了するまで待つとかなり時間がかかる場合があるので、forceフラグで新しいタスクのlastStatusがRUNNINGになったら古いタスクを強制的に止め…

Kinesis + Lambdaの組み合わせが便利

fluentd*1で出力先をいろいろと追加するよりは、一旦Kinesisに突っ込んでLambdaで処理した方がいろいろと捗る感じがします。 特に部署やチーム毎に欲しいログの形式、バケット、パスの切り方(時間単位 or 日単位 or サーバ単位 etc...)、出力先(S3、Kibana e…

Redshift便利スクリプト

AWSLabsのGithubリポジトリにいろいろと便利なスクリプトがあります。 日次でVacuum処理やAnalyze処理を夜間に走らせたいということで、 Analyze & Vacuum Schema Utility*1をAirflow*2で使いたいなと思いましたが、 クラス化されていなかったり、ログがファ…

Boto3でEMR

最近HiveでETL処理とかするためにEMRをよくさわっています。Boto3からクラスタ起動したりステップ追加したりしています。 Boto2だとクラスタ作成時にセキュリティグループの設定等をapi_paramsに追加する形になり非常にわかりにくいです。 Boto3だとJSONライ…

Redsfhit(dw2.8xlarge)のリサイズ所要時間

Redshiftのリサイズ処理ってどれくらいかかるのか検索しても事例が出てこないのでメモを残しておく。 dw2.8xlarge 2ノード 約3TBストレージを利用した状態から、2ノード追加し4ノード構成にした時の所要時間は2時間23分でした。 クロスリージョンのスナップ…

Redshift集計Tipsその1 - カレンダーの活用

その2があるのかは謎 適当な集計すんなksgってことで、以前会社の人に教えてもらいました。ありがとうございます。 日毎に集計を行うことが多いと思いますが、データがない日があると歯抜になり、 Window関数を利用した集計で正しい結果が求められていなかっ…

Redshift便利クエリその1

その2があるのかは謎 how to find size of database, schema, table in redshift 各テーブルのオーナー、容量、行数が一発で分かります。便利! 定期的に確認して、不要なテーブルは削除しましょう。 Enjoy!

RDS(PostgreSQL)に大きなデータを投入する際のパラメータ設定

RHEL6.5から20GB 6000万件ぐらいのCSVデータをpsqlコマンド(\copyコマンド)で投入していると、必ず数分してコネクションが切れる問題が発生しました。 RDSはPostgreSQL(9.3.3)を利用しており、psqlのバージョンの問題によるものかもしれないので、8.4系、9.3…

RDS(PostgreSQL)でPostGIS

AWSのドキュメントの通りにExtensionを追加するだけ。 Appendix: Common DBA Tasks for PostgreSQL - Amazon Relational Database Service 適当にDBを作る。 作ったDBにPostGISのExtensionを追加する。 空間データが扱えるとログ分析等で色々と便利だったり…

HAProxyとPgBouncerを利用したRDS(PostgreSQL)の負荷分散

HAProxyは1.5系を使いたいのでRPMのビルド環境を作る。*1 HAProxyのRPMを作成してインストールする。*2 PgBouncerはPGDG*3からyumでインストールする。 HAProxyの設定は以下 PgBouncerの設定は以下 WebアプリからはPgBouncer(5433)に接続、PgBouncerがHAProx…

Redshiftでヘッダ付きのCSV出力を強いられた時の対処法

以前はunloadコマンドにparallelオプションがなかったので、Pythonでちょっとしたスクリプトを書いてファイルマージとヘッダの追加をしていました。 unloadコマンドにparallelオプションが追加され、6GBぐらいまでなら単一ファイルに出力できるようになった…

Amazon Workspacesオレゴンリージョンで日本語キーボードを使うたった1つの方法

AWS

日本語キーボードの設定をしても、レジストリをいじっても変更できない*1ので、 keyhacを使って英語 -> 日本語キーボードにマッピングし直すのが手っ取り早い。 https://sites.google.com/site/craftware/keyhac 普段HHKの英語キーボード使ってるので特に困…