Glueジョブで Python ライブラリ GeoPy を使えることを確認したメモ。
GeoPy を zip で圧縮して S3 バケットにアップロードする
- GitHub - geopy/geopy: Geocoding library for Python. から [Clone or download] で [Download ZIP] を選択して、ダウンロードする。
- ダウンロードした geopy-master.zip を解凍して、geopy-master 以下の geopy を zip で圧縮する。
- S3 バケットを作成して geopy.zip をアップロードする。
- "s3://yoheia-glue-lib/python/geopy.zip" というパスにアップロードしたとする。
Glue ジョブを作成する
import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job from pyspark.sql import SQLContext from pyspark.sql.functions import year, month, date_format sc = SparkContext() glueContext = GlueContext(sc) spark = glueContext.spark_session job = Job(glueContext) job.init('GeoPy Test Job') from geopy.geocoders import Nominatim geolocator = Nominatim() location = geolocator.reverse("52.509669, 13.376294") print(location.address)
実行してみる
- 実行して、CloudWatch Logs で確認する。
- ロググループ/aws-glue/jobs/outputjr_f1...
2020-03-24 12:35:25,602 WARN [Thread-9] utils.ApacheUtils (ApacheUtils.java:noSuchMethodThrownByNormalizeUriInvoker(246)) - NoSuchMethodException was thrown when disabling normalizeUri. This indicates you are using an old version (< 4.5.8) of Apache http client. It is recommended to use http client version >= 4.5.9 to avoid the breaking change introduced in apache client 4.5.7 and the latency in exception handling. See https://github.com/aws/aws-sdk-java/issues/1919 for more information Steinecke, Potsdamer Platz, Tiergarten, Mitte, Berlin, 10785, Deutschland 2020-03-24 12:35:27,236 INFO [Driver] yarn.ApplicationMaster (Logging.scala:logInfo(54)) - Final app status: SUCCEEDED, exitCode: 0 2020-03-24 12:35:27,238 INFO [pool-4-thread-1] spark.SparkContext (Logging.scala:logInfo(54)) - Invoking stop() from shutdown hook 2020-03-24 12:35:27,242 INFO [pool-4-thread-1] server.AbstractConnector (AbstractConnector.java:doStop(318)) - Stopped Spark@4ebbc3b6{HTTP/1.1,[http/1.1]}{0.0.0.0:0} 2020-03-24 12:35:27,244 INFO [pool-4-thread-1] ui.SparkUI (Logging.scala:logInfo(54)) - Stopped Spark web UI at