AWS Glue クローラを実行してデータカタログオブジェクトを表示してみた

2021.05.27

こんにちは、yagiです。

本日は AWS Glue クローラを実行してデータカタログオブジェクトを表示してみた ので記載します。

本内容は以下のAWS公式チュートリアルからの実施です。

チュートリアル: AWS Glue クローラの追加

AWS Glue クローラ とは?

クローラを使用して、AWS Glue データカタログにテーブルを入力することができます。これは、AWS Glue ユーザーが最もよく使用する基本的な方法です。クローラは 1 回の実行で複数のデータストアをクロールできます。完了すると、クローラは、データカタログ内の 1 つ以上のテーブルを作成または更新します。AWS Glue で定義した抽出、変換、およびロード (ETL) ジョブは、これらのデータカタログテーブルをソースおよびターゲットとして使用します。ETL ジョブは、ソースおよびターゲットのデータカタログテーブルで指定されているデータストアに対して読み書きを行います。

(AWS公式ドキュメントからの引用)

AWSGlueクローラーの追加

このAWSGlueシナリオでは、主要な航空会社の到着データを分析して、毎月の出発空港の人気を計算するように求められます。2016年のフライトデータがCSV形式でAmazonS3に保存されています。データを変換して分析する前に、そのメタデータをAWSGlueデータカタログにカタログします。Amazon S3のこれらのフライトログからメタデータを推測し、データカタログにテーブルを作成するクローラーを追加します。

以下のステップで行います。

  • ステップ1:クローラーを追加する
  • ステップ2:クローラーを実行する
  • ステップ3:AWSGlueデータカタログオブジェクトを表示する

ステップ1:クローラーを追加する

AmazonS3に保存されているCSVファイルからメタデータを抽出するクローラーを設定して実行します。

AWS Glueサービスコンソールの左側のメニューで、「クローラー」を選択します。「クローラーの追加」を押下します。

クローラー名を入力します。「次へ」を押下します。クローラーは分類子を呼び出して、データのスキーマを推測します。このチュートリアルでは、デフォルトでCSVの組み込み分類子を使用します。

クローラーのソースタイプとして、「データストア」を選択し、「次へ」を押下します。

データストアの選択で「S3」を選択、「別のアカウントで指定されたパス」としてチュートリアルのインクルードパスを指定して、「次へ」を押下します。

別のデータストアの追加で「いいえ」を選択。「次へ」を押下します。 ※1つのクローラーで複数のデータストアをクロールしたい場合に「はい」を選択して利用します。今回は使わないので「いいえ」を選択。

「IAMロールの作成」を押下して、IAMロール名を入力し、「次へ」を押下します。

このクローラのスケジュールを設定する「頻度」について、「オンデマンドで実行」を選択し、「次へ」を押下します。

「データベースの追加」を押下し、ポップアップウィンドウにデータベース名を入力、「作成」を押下します。

テーブルに追加されたプレフィックスを入力して、「次へ」を押下します。

入力内容を確認して、「完了」を押下します。

ステップ2:クローラーを実行する

作成したクローラーを選択して、「クローラーの実行」を押下します。

クローラーの実行が開始されたことを確認します。完了まで待ちます。

ステップ3:AWSGlueデータカタログオブジェクトを表示する

クローラーによって作成されたテーブルを表示して確認します。

テーブル名を選択し、テーブルの設定、パラメーター、およびプロパティを表示します。ページ下部には、このテーブルの列とデータ型に関する情報であるスキーマが表示されます。

「パーティションの表示」を押下して、データ用に作成されたパーティションを確認します。

保存先であるS3から、9月分のファイルを表示してみます。最初の10行を表示(1行目はラベル)してみます。以下のようなデータとなります。

YEAR,QUARTER,MONTH,DAY_OF_MONTH,DAY_OF_WEEK,FL_DATE,UNIQUE_CARRIER,AIRLINE_ID,CARRIER,TAIL_NUM,FL_NUM,ORIGIN_AIRPORT_ID,ORIGIN_AIRPORT_SEQ_ID,ORIGIN_CITY_MARKET_ID,ORIGIN,ORIGIN_CITY_NAME,ORIGIN_STATE_ABR,ORIGIN_STATE_FIPS,ORIGIN_STATE_NM,ORIGIN_WAC,DEST_AIRPORT_ID,DEST_AIRPORT_SEQ_ID,DEST_CITY_MARKET_ID,DEST,DEST_CITY_NAME,DEST_STATE_ABR,DEST_STATE_FIPS,DEST_STATE_NM,DEST_WAC,CRS_DEP_TIME,DEP_TIME,DEP_DELAY,DEP_DELAY_NEW,DEP_DEL15,DEP_DELAY_GROUP,DEP_TIME_BLK,TAXI_OUT,WHEELS_OFF,WHEELS_ON,TAXI_IN,CRS_ARR_TIME,ARR_TIME,ARR_DELAY,ARR_DELAY_NEW,ARR_DEL15,ARR_DELAY_GROUP,ARR_TIME_BLK,CANCELLED,CANCELLATION_CODE,DIVERTED,CRS_ELAPSED_TIME,ACTUAL_ELAPSED_TIME,AIR_TIME,FLIGHTS,DISTANCE,DISTANCE_GROUP,CARRIER_DELAY,WEATHER_DELAY,NAS_DELAY,SECURITY_DELAY,LATE_AIRCRAFT_DELAY,FIRST_DEP_TIME,TOTAL_ADD_GTIME,LONGEST_ADD_GTIME
2016,3,9,2,5,9/2/16,DL,19790,DL,N362NW,2124,14869,1486903,34614,SLC,"Salt Lake City, UT",UT,49,Utah,87,11298,1129804,30194,DFW,"Dallas/Fort Worth, TX",TX,48,Texas,74,830,830,0,0,0,0,0800-0859,21,851,1155,9,1208,1204,-4,0,0,-1,1200-1259,0,,0,158,154,124,1,989,4,,,,,,,,
2016,3,9,2,5,9/2/16,DL,19790,DL,N920DE,2125,10397,1039705,30397,ATL,"Atlanta, GA",GA,13,Georgia,34,10821,1082104,30852,BWI,"Baltimore, MD",MD,24,Maryland,35,955,951,-4,0,0,-1,0900-0959,16,1007,1125,5,1144,1130,-14,0,0,-1,1100-1159,0,,0,109,99,78,1,577,3,,,,,,,,
2016,3,9,2,5,9/2/16,DL,19790,DL,N920DE,2125,10821,1082104,30852,BWI,"Baltimore, MD",MD,24,Maryland,35,10397,1039705,30397,ATL,"Atlanta, GA",GA,13,Georgia,34,1230,1250,20,20,1,1,1200-1259,10,1300,1428,10,1430,1438,8,8,0,0,1400-1459,0,,0,120,108,88,1,577,3,,,,,,,,
2016,3,9,2,5,9/2/16,DL,19790,DL,N623DL,2126,14122,1412202,30198,PIT,"Pittsburgh, PA",PA,42,Pennsylvania,23,10397,1039705,30397,ATL,"Atlanta, GA",GA,13,Georgia,34,745,755,10,10,0,0,0700-0759,13,808,933,6,933,939,6,6,0,0,0900-0959,0,,0,108,104,85,1,526,3,,,,,,,,
2016,3,9,2,5,9/2/16,DL,19790,DL,N334NW,2127,12264,1226402,30852,IAD,"Washington, DC",VA,51,Virginia,38,13487,1348702,31650,MSP,"Minneapolis, MN",MN,27,Minnesota,63,630,629,-1,0,0,-1,0600-0659,12,641,750,5,801,755,-6,0,0,-1,0800-0859,0,,0,151,146,129,1,908,4,,,,,,,,
2016,3,9,2,5,9/2/16,DL,19790,DL,N839DN,2128,11433,1143302,31295,DTW,"Detroit, MI",MI,26,Michigan,43,13204,1320402,31454,MCO,"Orlando, FL",FL,12,Florida,33,1019,1111,52,52,1,3,1000-1059,30,1141,1351,8,1258,1359,61,61,1,4,1200-1259,0,,0,159,168,130,1,957,4,0,0,61,0,0,,,
2016,3,9,2,5,9/2/16,DL,19790,DL,N839DN,2128,13204,1320402,31454,MCO,"Orlando, FL",FL,12,Florida,33,11433,1143302,31295,DTW,"Detroit, MI",MI,26,Michigan,43,1355,1449,54,54,1,3,1300-1359,9,1458,1652,5,1634,1657,23,23,1,1,1600-1659,0,,0,159,128,114,1,957,4,0,0,0,0,23,,,
2016,3,9,2,5,9/2/16,DL,19790,DL,N947DN,2129,14576,1457604,34576,ROC,"Rochester, NY",NY,36,New York,22,10397,1039705,30397,ATL,"Atlanta, GA",GA,13,Georgia,34,600,559,-1,0,0,-1,0600-0659,13,612,801,9,810,810,0,0,0,0,0800-0859,0,,0,130,131,109,1,749,3,,,,,,,,
2016,3,9,2,5,9/2/16,DL,19790,DL,N937DL,2131,12953,1295302,31703,LGA,"New York, NY",NY,36,New York,22,11433,1143302,31295,DTW,"Detroit, MI",MI,26,Michigan,43,1845,1955,70,70,1,4,1800-1859,61,2056,2207,9,2058,2216,78,78,1,5,2000-2059,0,,0,133,141,71,1,502,3,0,0,8,0,70,,,

結論

AWS公式チュートリアルを使用して、AWS Glue クローラを実行してデータカタログオブジェクトを表示してみました。 今回は使いませんでしたが、1回の実行で複数のデータストアをクロールすることもできるなど、簡単な操作で効率良くデータの処理ができ、非常に便利なことがわかりました。

参考

クローラの定義 -AWS Glue