このコンテンツでは、Spark data frame を使ったデータクレンジングのタスクに取り組んで頂きます。
事前準備
公共交通オープンデータセンター開発者サイトのデータを使用してタスクを進めていきます。 こちらのサイトよりユーザー登録をしましょう。
無料で登録でき、様々な公共交通機関のオープンデータがAPIで取得出来るようになります。
Task1
横浜市交通局 乗降者数情報のデータをAPIで取得しjson objectをspark dataframeに変換しましょう。
Task2
dataframeを下記の通り、1行につき駅ごとかつ年ごとの乗降者数のデータが入る形に変換しましょう。
id | type | date | includeAlighting | operator | railway | station | sameAs | surveyYear | passengerJourneys |
---|---|---|---|---|---|---|---|---|---|
00001C00000000000001000003395B45 | PassengerSurvey | 00:00.0 | TRUE | YokohamaMunicipal | Blue | Blue.Azamino | Azamino | 2013 | 80212 |
00001C00000000000001000003395B45 | PassengerSurvey | 00:00.0 | TRUE | YokohamaMunicipal | Blue | Blue.Azamino | Azamino | 2014 | 79061 |
00001C00000000000001000003395B45 | PassengerSurvey | 00:00.0 | TRUE | YokohamaMunicipal | Blue | Blue.Azamino | Azamino | 2015 | 80394 |
Task3
横浜市交通局 駅情報から駅の名称、緯度経度情報を取得し、Task2の結果に結合し、下記のschemaにしましょう
id | type | date | includeAlighting | operator | railway | station | sameAs | surveyYear | passengerJourneys | lat | long |
---|---|---|---|---|---|---|---|---|---|---|---|
00001C00000000000001000003395B45 | PassengerSurvey | 2020-03-03 08:00:00.0 | TRUE | YokohamaMunicipal | Blue | Blue.Azamino | Azamino | 2013-01-01 00:00:00.0 | 80212 | 35.568022 | 139.553876 |
00001C00000000000001000003395B45 | PassengerSurvey | 2020-03-03 08:00:00.0 | TRUE | YokohamaMunicipal | Blue | Blue.Azamino | Azamino | 2014-01-01 00:00:00.0 | 79061 | 35.568022 | 139.553876 |
00001C00000000000001000003395B45 | PassengerSurvey | 2020-03-03 08:00:00.0 | TRUE | YokohamaMunicipal | Blue | Blue.Azamino | Azamino | 2015-01-01 00:00:00.0 | 80394 | 35.568022 | 139.553876 |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
root |-- id: string (nullable = true) |-- type: string (nullable = true) |-- date: timestamp (nullable = true) |-- includeAlighting: boolean (nullable = true) |-- operator: string (nullable = true) |-- railway: string (nullable = true) |-- station: string (nullable = true) |-- sameAs: string (nullable = true) |-- surveyYear: timestamp (nullable = true) |-- passengerJourneys: long (nullable = true) |-- lat: double (nullable = true) |-- long: double (nullable = true) |