AWS

文系エンジニアがAWS Certified Machine Learning – Specialty に合格してきました

ここ数年のAIブームで、AIの勉強全くしてこなかった私でも、少しずつ仕事でAI関係に関わることができてきました。その度に部分的に頑張って追いつくというのを続けてきたのですが、そろそろ限界を感じたので、どこかで体系的に勉強しなくてはと考えていまし…

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 = 'テーブル名'; +-------------------------------+-------------+--------------…

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…

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

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

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

AWS

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

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 テストデータ生成 こ…

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

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

RedshiftとSpectrumとS3とVPCで組み合わせた場合のネットワーク経路が複雑だったので整理してみた

VPC絡みでRedshiftのネットワークが複雑でハマって整理したので、そのまとめです。 あくまで2019/02/09現在の仕様なので、仕様変わっていることもあると思います。 全体図 2019/02/20追記 Redshift SpectrumからS3への接続はVPC外を通る ParquetのCOPYはJSON…

EMR上のApache AtlasにAWS Glueのデータカタログ情報をインポートしてみた

Hiveのメタデータ管理ができるApache Atlasですが、こちらのブログを参考にGlueのカタログ情報もインポートしてみました。 aws.amazon.com EMRのHiveメタストアとしてGlueを使うための設定を準備 EMRクラスタの起動 EMRクラスタへ接続 Glue接続確認 AtlasへH…

AWS Athenaのユーザごとのクエリ実行履歴を分析するためのデータをAWS CLIで収集

Athenaのクエリの実行履歴を、実行ユーザと紐付ける方法です。 CloudTrailからAthenaの実行イベントを取得 こちらのコマンドを利用します。 lookup-events — AWS CLI 1.16.96 Command Reference EventSource=athena.amazonaws.com EventName=StartQueryExecu…

Glueの開発環境をVPC内に閉じるためSageMaker止めてEC2で構築してみた

Glueの開発にSageMaker使っていたのですが、いくつか自分の使い方では問題があったので自分で立ててみたら簡単でした。 SageMakerはネットワークが特徴的 構成 JupyterとSparkMagicインストール ① Anacondaインストール ② (Anaconda Prompt) widgetsnbextens…

GlueのDynamicFrameでS3へファイル書き出す時はCSVやJSONよりParquetが早い

DynamicFrameを使った開発をしていたら、大した処理していないのに、想像以上に時間がかかるなと思って調べていたら、JSONの書き出しが時間かかっていました。 タイトルの通り、JSONやCSVでのS3出力と比較してParquetでの出力は凄い早いというお話です。処理…

Glueで色々な日付フォーマットの文字列をtimestamp型に変換してみた

掲題の件、JSON等にある日付フォーマットの文字列から、Timestamp形式に変換したかったのですが、どの書式だと変換できるのか良くわかってなかったので、実際に実行してみました。 初期化 日付文字列 Glueでマッピング 結果 UnixTimeの変換 Glue Spark 初期…

AthenaでHIVE_PARTITION_SCHEMA_MISMATCHが発生 GlueカタログのTableとPartitionの間のスキーマに不整合直して解消

掲題のエラーに当たってサポートに対応教えてもらったのでメモ。 事象 原因 パーティションの例 テーブルのスキーマ パーティション毎のスキーマ 対応 参考 事象 CSVをGlueを使ってパーティション分割して、AthenaでプレビューしてみたらHIVE_PARTITION_SCHE…

Lake Fomationの前身?AWS Data Lake Solutionを触ってみました

先月のre:Invent 2018で発表になったLake Formation。現地で聞いていて即効プレビュー申し込んであるのですが まだ使えていません。 そんな時に一緒に仕事をしている方から、こんなモノがあることを聞きました。 aws.amazon.com こちらから引用したアーキテ…

Alexaに聞いたらDatalakeからKPIを抽出して答えてくれますよというWorkshop受講してきた

re:Invent 2018、今日は私の日程の最終日でした、明日は帰りの飛行機早いので、このブログ書いたら寝ようと思って書いています。 ちょうど今、ChatBotもDatalakeも別々のプロジェクトで手がけてますが、まさかそれが合わさったセッションがあるとは思いませ…

re:InventでHands-On LabsからKeynote見てきました

AWS

re:Invent 2018に来ています。 KeynoteがOverflowで入れなかったので、どこかの部屋でモニタで見るくらいならと思いHands-On Labsに行ってきました。 Hands-On Labsでできること Quick Labsというトレーニングサービスがあります。 当然日本でも使えるもので…

re:Invent 2018でのAWS Glue周りの発表を聞いてきた(Python Shell、CloudWatch Event連携、Lake Formation)

AWS re:Invent 2018に参加するためラスベガスに来ています。 昨日はこちらのセッションを聞きました。 AWS re:Invent 2018: Building Serverless Analytics Pipelines with AWS Glue (ANT308) そこで、静かに(?)AWS Glueの新機能の発表がありました。 セ…

AWS GlueでDynamoDBがサポートされたので触ってみた

AWSのre:Invent 2018に参加するためラスベガスに来ています。 題名の通りGlueのCrawlerとETLジョブでDynamoDBがサポートされましたので早速動かしてみます。 セッション 発表されたセッションとスライドはこちらです。他にもあったのですが、今すぐ動くDynam…

AWS Glueの仕様でサポートに問い合わせた内容

最近Glueを使っていて、その過程でAWSサポートに問い合わせしたり、仕様を確認した内容をまとめておきます。 Tableのプロパティ(Parameters)の制限 SageMakerでGlueのライブラリ読み込むとエラーが出る S3からS3へのコピーでVPCエンドポイント使いたい 接…

AWS Certified Big Data - Specialty 合格してきました

AWSのソリューションアーキテクトのプロ持っていたのですが、1年くらい前に失効しています。 またアソシエイトから取るのも面倒だし、そもそも同じ試験受けるのってモチベーションを上げにくい。ということでAWSの認定から遠ざかっていたのですが、先日こん…

AWS GlueでGrok使いALB アクセスログを取り込んでParquetやORC形式に変換

Grokパターン作成 事前調査 ALBのアクセスログの項目 ビルドインのGrokのパターン logstashのELBのGrokパターン 作成 分類子(Classifier登録) Crawler カタログデータベース確認 テーブル確認 Athenaで検索 ETLジョブ Glueからパーティショニングして書き込…

【AWS Glue】aws-glue-samplesを動かすまでの前準備の作業メモ

AWS GlueのNotebook起動した際に Glue Examples ついている「Join and Relationalize Data in S3」のノートブックを動かすための、前準備のメモです。 Join and Relationalize Data in S3 This sample ETL script shows you how to use AWS Glue to load, tr…

UbuntuでもAWS Systems Manager Session Manager for Shell Accessをログ取得まで設定してみた

AWS

お世話になっているクラメソさんの記事(Mac向け)を見て、私のUbuntu PC環境でもいけるかなとやってみました。 dev.classmethod.jp Ubuntu PC側作業 サーバー側 Shell Accessで接続 ロギング設定 参考URL Ubuntu PC側作業 まずはawscliを最新に更新します。…

AWS SAM でGolangのデバッグができるようになったので試してみた

RSSのフィードにAWS SAM CLIでGolangのデバッグができるようになったというニュースが流れてきました。 AWS SAM CLI Now Supports Debugging Go Functions and Testing with 50+ Events 確かにリリースノートにも書いてある。 Release Debug your Lambda Fu…

AWS CDK (AWS Cloud Development Kit) がとても便利そうなので触ってみた

AWS

これ触ってみました。 github.com インストール 使ってみる 架空の要件 開発 プロジェクト作成 初期のディレクトリ構造 初期状態のスクリプトファイル ドキュメント aws-cdk使って定義を書いてみる スタックのデプロイ スタックの一覧 デプロイ実行 スタック…

Aurora Serverlessが出たので早速テスト環境に適用してみた

社内でAuroraのサーバーレスというのが出たらしいというので触ってみました。 Auroraのサーバーレス? 日本語の方が理解しやすかった 検証機のDBを切り替えてみた 手順 スナップショット取得 インスタンス復元 起動を待つ 接続確認 設定を確認してみる 気づい…