Amazon Web Services ブログ

Category: AWS Glue

AWS Step FunctionsとAWS Lambdaを使って複数のETLジョブの統合を行う

抽出、変換、ロード(Extract, Transform, Load, ETL)操作は、現在のエンタープライズデータレイクのバックボーンにひとまとまりとして形成されています。rawデータを役に立つデータセットへ変換し、最終的には、洞察可能な状態に変換します。ETLジョブは通常1つまたは1つ以上のデータソースからデートを読み、様々な種類の変換を適用し、結果を利用準備できているターゲットに書き込みます。ETLジョブのソースとターゲットはリレーショナルデータベースであるAmazon RDS(Amazon Relational Database) もしくはオンプレミス、データウェアハウスとしてAmazon Redshift 、オブジェクトストレージとしてAmazon Simple Storage Service(Amazon S3) のバケットなどがあります。Amazon S3は、AWSでデータレイクを構築するという状況において特に一般的です。 AWSは、ETLジョブの作成とデプロイを支援するAWS Glueを提供しています。AWS Glueは抽出・変換・ロードを行うフルマネージドなサービスであり、お客様が簡単に自分のデータとして準備、ロードできるものとなります。他のAWSサービスでもETLジョブを実装、デプロイすることも可能です。 AWS Database Migration Service(AWS DMS)、Amazon EMR(ステップAPIの利用)、さらにAmazon Athenaも含まれます。   ETLジョブワークフロー統合へのチャレンジ 多様なETLテクノロジーを含むETLワークフローをどのように統合できるでしょうか? AWS Glue、AWS DMS、Amazon EMRなどのサービスは、Amazon CloudWatch Eventsをサポートしており、ETLジョブを連動させることができます。 Amazon S3は、中心に置かれたデータレークストアでもあり、CloudWatch Eventsをサポートしています。しかし、CloudWatchイベントのみに依存するということは、ETLワークフローの視覚的表現が1つもないことを意味します。また、全体的なETLワークフローの実行ステータスを追跡し、エラー・シナリオを処理することは困難になります。 本ブログでは、AWS Step FunctionsとAWS Lambdaを使用して、任意の複雑なETLワークフローでさまざまなテクノロジを含む複数のETLジョブを編成する方法を説明します。

Read More

Amazon Kinesis Data Firehose、Amazon Athena、Amazon Redshift を使用して Apache Parquet 最適化データを分析する

Amazon Kinesis Data Firehoseは、 Amazon S3で構築されたデータを取得し、データレイクへデータを流し入れる最も簡単な方法です。このデータは、AWS CloudTrail ログファイル、Amazon VPC フローログ、Application Load BalancerなどのAWSのサービスによるものです。IoTイベント、ゲームイベントなどにもなります。このデータを効率的に参照するには、時間のかかるETL (抽出、転送、ロード)処理が必要です。最適なファイルフォーマットへデータを抽出、変換することで、インサイトへの時間が増えます。この状況は、特に時間とともに価値が失われるリアルタイムデータ向けには最適とはいえません。 この通常の問題を解決するために、Kinesis Data Firehoseでは、Apache Parquet または Apache ORC フォーマット内でAmazon S3へデータを保存できます。S3でデータを参照する場合、最適なパフォーマンスとコスト効率に優れた、推奨される最適なカラムナフォーマットがあります。これにより、Amazon Athena、Amazon Redshift、AWS Glue、Amazon EMR、またはAWS パートナーネットワークから、またオープンソースコミュニティから利用できるその他のビッグデータツールを使用する場合に、直接的なメリットがあります。 Amazon Connectは、使いやすい、クラウドベースの連絡センターサービスです。通常のサービスよりも低コストで優れた顧客体験を簡単に提供することができます。オープンプラットフォーム設計により、他のシステムと簡単に統合できます。その中のシステムの1つとして、Kinesis Data Streams および Kinesis Data Firehose内のAmazon Kinesisがあります。 Apache Parquetフォーマット内の Amazon ConnectからS3までイベントを保存できることは素晴らしいことです。リアルタイムに Amazon Athena および Amazon Redshift Spectrumを使用して、この主なパフォーマンスとコスト最適化を利用した分析を実行できます。もちろん、Amazon Connectはその1例です。これにより、特に、組織がデータレイクを継続的に構築する場合、最適な機会が開けるでしょう。 Amazon Connectには、管理者ダッシュボード内に一連の分析表示が含まれています。しかし、その他の種類の分析を実行したい場合もあるでしょう。この投稿では、Kinesis Data Streams、Kinesis Data Firehose、S3を経由してAmazon Connectからのデータストリームを設定し、Athena および […]

Read More

AWS Glue を使用して非ネイティブ JDBC データソースに対して ETL ジョブを実行する

AWS Glue は、抽出、変換、およびロード (ETL) のための完全管理型サービスで、これで分析のためのデータの準備と読み込みが簡単になります。AWS マネジメントコンソールで数回クリックするだけで ETL ジョブを作成し実行することができます。AWS Glue をデータストアにポイントするだけです。AWS Glue はデータを検出し、関連付けられたメタデータ (テーブル定義やスキーマなど) を AWS Glue データカタログに保存します。 AWS Glue には、IP 接続がある限り、AWS やその他の場所で JDBC ドライバーを用いたデータソースへのネイティブコネクタがあります。この記事では、現在のところ AWS Glue でネイティブにサポートされていないデータソースに接続する方法を示します。IBM DB2 と SAP Sybase の 2 つのデータソースに対する ETL ジョブへの接続と実行をご紹介します。ただし、他の JDBC アクセス可能データベースと同じプロセスを使用することもできます。

Read More

[AWS Black Belt Online Seminar] AWS で構築するデータレイク基盤のアーキテクチャ 資料及び QA 公開

こんにちは、マーケティングの鬼形です。 先日(2018/4/24)開催しました AWS Black Belt Online Seminar「AWS で構築するデータレイク基盤のアーキテクチャ」の資料を公開致しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。

Read More

AWS Developer Toolsを使用したサーバレスなAWS Glue ETLアプリケーションの継続的インテグレーションとデリバリの実装

大規模なデータおよびデータレイクのワークロード用にサーバーレスETL(抽出、変換およびロード)アプリケーションを開発するためにAWS Glueはますます普及しています。 ETLアプリケーションをクラウドベースのサーバーレスETLアーキテクチャに変換する組織は、ソースコードからビルド、デプロイ、プロダクトデリバリまで、シームレスでエンドツーエンドの継続的なインテグレーションおよび継続的なデリバリ(CI / CD)パイプラインが必要です。優れたCI / CDパイプラインを持つことで、組織はプロダクションリリース前にバグを発見し、より頻繁にアップデートを提供することができます。また、開発者が高品質のコードを書いたり、ETLのジョブリリース管理プロセスを自動化したり、リスクを軽減したりするのに役立ちます。 AWS Glueは、フルマネージドのデータカタログとETLのサービスです。これは、データの発見、変換、およびジョブスケジューリングなどの困難で時間のかかる作業を簡素化し自動化します。 AWS Glueは、データソースをクロールし、CSV、Apache Parquet、JSONなどの一般的なデータフォーマットとデータタイプ用に事前に作成された分類子を使用してデータカタログを構築します。 AWS Glueを使用してETLアプリケーションを開発する場合、CI / CDの次のような課題に直面する場合があります。 ユニットテストによる繰り返しの開発 継続的なインテグレーションとビルド ETLパイプラインをテスト環境にプッシュする ETLパイプラインをプロダクション環境にプッシュする 実データを使用したETLアプリケーションのテスト(live test) データの調査と検証 この記事では、AWS Developer Tools(AWS CodePipeline、AWS CodeCommit、AWS CodeBuildなど)とAWS CloudFormationがサポートするサーバーレスAWS Glue ETLアプリケーションのCI / CDパイプラインを実装するソリューションを紹介します。 ソリューションの概要 次の図は、ワークフローのパイプラインを示しています。 このソリューションでは、AWS CodePipelineを使用して、ETLアプリケーションのソースコードのテストおよびステージへのデプロイを制御および自動化することができます。 このソリューションは、以下のステージを含むパイプラインで構成されています。 1.)Source Control:このステージでは、デプロイするETLジョブのAWS Glue ETLジョブソースコードとAWS CloudFormationテンプレートファイルの両方がバージョン管理にコミットされます。 バージョン管理にAWS CodeCommitを使用することにしました。 ETLジョブソースコードとAWS CloudFormationテンプレートを取得するには、gluedemoetl.zipファイルをダウンロードします。 このソリューションは、以前の記事、AWS Glue と Amazon S3 を使用してデータレイクの基礎を構築するに基づいて開発されました。 2.)LiveTest:このステージでは、AWS […]

Read More

AWS Glue のパーティション分割されたデータを使用した作業

AWS Glue は、Hive 形式で整理されたデータセットの高度な取扱いをサポートします。AWS Glue クローラーは、自動的に Amazon S3 データのパーティションを識別します。AWS Glue ETL (Extract/Transform/Load) ライブラリは、DynamicFrame を取り扱う際、ネイティブでパーティションをサポートします。DynamicFrame はデータの分散コレクションを表します。スキーマを指定する必要はありません。DynamicFrame の作成時に述語をプッシュダウンしてパーティションをフィルタリングし、高コストの S3 への呼び出しを回避できます。また、Apache Spark DataFrame に変換することなく直接パーティショニングされたディレクトリに書き込む機能のサポートを追加しました。 パーティショニングは、データセットを様々なビッグデータシステムで効率的にクエリできるように、それらを整理するための重要な手法となっています。データは、ひとつまたは複数の列の重複しない値に基づいて、階層ディレクトリ構造にまとめられます。たとえば、Amazon S3 のアプリケーションログを、年別、月別、日別の内訳で日付ごとにパーティショニングするとします。すると、1 日分に相当するデータがs3://my_bucket/logs/year=2018/month=01/day=23/のようなプレフィックスの下に配置されます。 Amazon Athena、Amazon Redshift Spectrum、AWS Glue などのシステムでは、これらのパーティションを使用して値ごとにデータをフィルタリングできるため、Amazon S3 への不要な呼び出しを行う必要がありません。このため、読み取る必要のあるパーティションが少ないアプリケーションのパフォーマンスが大幅に改善します。 本投稿では、AWS Glue を使用してパーティショニングされたデータセットを効率的に処理する方法を紹介します。まず、クローラーを設定して、パーティショニングされたデータセットを自動的にスキャンし、AWS Glue データカタログにテーブルとパーティションを作成する方法を説明します。次に、パーティショニングされたデータを取り扱うための AWS Glue ETL ライブラリの機能をいくつか紹介します。SQL 式やユーザー定義の関数を使用してパーティションをフィルタリングし、Amazon S3 からの不要なデータのリスト作成や読み取りを回避することができます。また、ETL ライブラリでは、Spark SQL DataFrame に依存することなく、AWS Glue DynamicFrame をパーティションに直接記述する機能のサポートを追加しました。 それでは、始めましょう。 パーティショニングされたデータのクローリング この例では、以前の […]

Read More

【開催報告】AWS 上でのデータ活用ワークショップ

こんにちは。AWS ソリューションアーキテクトの上原誠 (@pioho07) です。 3月14日のホワイトデーに、AWS上でのデータ活用ワークショップを開催いたしました。 直前のご案内にもかかわらず80名ほどのお客様にご参加頂きました。   まずはソリューションアーキテクトの八木より、データ活用のための一般的なDataLakeの考え方について触れ、ラムダアーキテクチャの解説を行いその優位性を説明しました。その後でAWS上でこられらを実現するためのAWSの各サービス Amazon S3 や Amazon Elasticsearch Service や Amazon Kinesis などを紹介し、アーキテクチャー図と共に解説を行いました。     次に、私上原からラムダアーキテクチャーを使ったDataLakeを構築するハンズオンを実施しました。まだデータ量は大きくないが、今後増え続けるデータに対してデータ活用を始めていきたい!そんな方がすぐに実践で使えるようなサービスやサービスの組み合わせを意識した内容にいたしました。       また、ハンズオン後に実施したソリューションアーキテクトによる個別相談会にも多くのお客様にご参加頂きました。 アンケートでも励みになるお言葉を頂けました。 無料で受けたセミナーなのにとても充実していてすごいと思った 内容が事業会社のエンジニア向けと感じた 次回は夏ごろに開催予定です。ご応募是非お待ちしております。      

Read More

AWS Cloudtrail Logs を AWS Glue と Amazon Quicksight 使って可視化する

AWS CloudTrail ログを簡単に視覚化できることは、AWS インフラストラクチャがどのように使用されているかについてより良い理解を提供してくれます。また、AWS API コールの監査とレビューを行って、AWS アカウント内のセキュリティ異常を検知するためにも役立ちます。これを行うには、CloudTrail ログに基づいた分析を実行できる必要があります。 この記事では、Amazon S3 内の AWS CloudTrail ログを JSON 形式からクエリ用に最適化された形式のデータセットに変換するための AWS Glue と AWS Lambda の使用について詳しく説明します。その後、Amazon Athena と Amazon QuickSight を使用してデータをクエリし、視覚化します。 ソリューションの概要 CloudTrail ログを処理するには、以下のアーキテクチャを実装する必要があります。 CloudTrail は Amazon S3 バケットフォルダにログファイルを配信します。これらのログを正しくクロールするには、S3 バケットの単一フォルダ内に変換済みファイルを格納する Amazon S3 によってトリガーされる Lambda 関数を使ってファイルコンテンツとフォルダ構造を変更します。ファイルが単一のフォルダ内にある場合、AWS Glue はデータをスキャンし、それを Apache Parquet フォーマットに変換して、Amazon Athena と Amazon QuickSight を使用したクエリと視覚化を可能にするためにカタログ登録します。   チュートリアル ソリューションを構築するために必要なステップを見て行きましょう。 CloudTrail ログのセットアップ 最初に、S3 バケットにログファイルを配信する証跡をセットアップする必要があります。CloudTrail […]

Read More

AWS Glue や Amazon Athena を用いたサーバーレスな Machine Learning 環境

属性をもとにデータセットを分割しなければならなかったことはありませんか?K-means はデータ分割を行うために最も頻繁に使用されている Machine Learning アルゴリズムの 1 つです。このアルゴリズムは異なるグループ (クラスター) にデータを分けることで機能します。各サンプルにはクラスターが指定されます。これは同じクラスターに指定されたサンプルが、他のクラスターにあるサンプルに比べて互いが類似しているようにするためです。 今回のブログでは AWS Glue を使用して、Amazon S3 にあるタクシー乗車のデータセットを例に K-means を適用し、そのデータをタクシーの座標に基づき 100 通りのクラスターに分割する方法を説明します。次に Amazon Athena を使用し、乗車数そして各クラスターのおおよその地域をクエリします。最後に Amazon Athena を使用して、最も乗車数の多かった 4 つの地域の座標を割り出します。AWS Glue と Amazon Athena では、ユーザーによるプロビジョンやサーバー管理を必要とせずに、こうしたタスクを実行することができます。 ソリューションの概要 今回は、過去のブログで使用したニューヨーク市のタクシーに関するデータセットを使用します: 「AWS Glue、Amazon Athena、Amazon QuickSight を使用して様々なプロバイダからのデータを調和、クエリ、視覚化する (Harmonize, Query, and Visualize Data from Various Providers using AWS Glue, Amazon Athena, and Amazon QuickSight)」2016 年 1 月のタクシー乗車に関する緑色のタイプから構成されたテーブルを使用します。 座標に基づいたデータセットを分割するために、Spark […]

Read More

AWS Glue と Amazon S3 を使用してデータレイクの基礎を構築する

データレイクは、大量の様々なデータを扱うという課題に対処するため、データを分析および保存するための方法としてますます一般的になっています。データレイクを使うと、組織は全ての構造化データおよび非構造化データを1つの中央リポジトリに格納できます。データはそのまま保存できるため、あらかじめ定義されたスキーマに変換する必要はありません。 多くの組織は AWS をデータレイクとして使う価値を理解しています。例えば Amazon S3 は高い耐久性があり、コンピューティングとストレージの分離をしながら、オープンデータフォーマットをサポートする費用対効果の高いオブジェクトの開始ができ、全てのAWS 分析サービスと連携します。Amazon S3 はデータレイクの基礎を提供しますが、他のサービスを追加してビジネスニーズに合わせることができます。AWS のデータレイク構築の詳細については What is a Data Lake? を参照してください。 データレイクを使う主な課題は、データの検索とスキーマやデータフォーマットの理解であるため、Amazonは AWS Glue をリリースしました。AWS Glue は Amazon S3 データレイクからデータ構造と形式を発見することで、迅速にビジネスの洞察を導き出すために要する時間と労力を大幅に削減します。AWS Glue は Amazon S3 上のデータを自動的にクロールし、データフォーマットを特定し、他の AWS 分析サービスで使用するためのスキーマを提案します。 この記事では、AWS Glue を使って Amazon S3 上のデータをクロールする方法と他のAWSサービスで使用できるメタデータストアを構築するプロセスを説明します。 AWS Glue の特徴 AWS Glue はフルマネージドのデータカタログとETL(抽出、変換、ロード)サービスで、データの発見、変換、およびジョブスケジューリングなどの困難で時間のかかる作業を簡素化し自動化します。AWS Glue はデータソースをクロールし、CSV, Apache Parquet, JSON などの一般的なデータフォーマットとデータタイプ用に事前作成された Classifire を使用してデータカタログを構築します。 AWS Glue はモダンなデータアークテクチャーのコンポーネントである S3, Amazon RDS, Amazon Athena, Amazon […]

Read More