■ はじめに
https://dk521123.hatenablog.com/entry/2021/05/28/142153
のAWS Management Console画面において、 パーティションを個別で削除しようと思ったが、 画面からは削除できなかったため、 代わりに、Boto3のAPIを使って、削除した。 (ちなみに、パーティション設定の閲覧は可能) そこで今回は、 Boto3 APIでのパーティション削除などの操作について、 メモしておく。 (今後もテストなどで使用しそうだし) なお、テーブル操作については、以下の関連記事を参照のこと。
AWS Glue ~ Boto3 / DB・テーブル操作編 ~
https://dk521123.hatenablog.com/entry/2021/06/11/164015
目次
【0】Boto3 API仕様 【1】パーティション削除 【2】パーティション取得 【3】パーティション追加 【4】パーティション更新
【0】Boto3 API仕様
* 基本、以下を探れば、使用したいAPIは見つかるはず。
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#client
【1】パーティション削除
* delete_partition() を使えばいい。 * 事前に削除対象のパーティションの存在チェックをしたい場合 「【2】パーティション取得」のAPIと組み合わせればいい
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#Glue.Client.delete_partition
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-api-catalog-partitions.html#aws-glue-api-catalog-partitions-DeletePartition
response = client.delete_partition( CatalogId='string', DatabaseName='string', TableName='string', PartitionValues=[ 'string', ] )
サンプル
# ここが理解できれば、後は惰性でできると思う import boto3 try: from botocore.exceptions import BotoCoreError, ClientError except ImportError: pass # 削除対象の情報 target_db = 'sample_db' target_table = 'person' target_partition_value = '2021-06-01' try: glue_client = boto3.client('glue', region_name='us-west-2') response = glue_client.delete_partition( DatabaseName=target_db, TableName=target_table, PartitionValues=[target_partition_value] ) print(response) except(BotoCoreError, ClientError) as ex: if ex.response['Error']['Code'] == 'EntityNotFoundException': print('The partition has been already deleted...') else: print('Error ' + str(ex)) print("Done")
補足:batch_delete_partition() について
* 複数パーティションを一気に削除したい場合に使用する
response = client.batch_delete_partition( CatalogId='string', DatabaseName='string', TableName='string', PartitionsToDelete=[ { # ★違いは、ここが複数値を渡せる点 'Values': [ 'string', ] }, ] )
【2】パーティション取得
* get_partition() / batch_get_partition() / get_partitions() を使う
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#Glue.Client.get_partition
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#Glue.Client.batch_get_partition
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#Glue.Client.get_partitions
【3】パーティション追加
* create_partition() / batch_create_partition() を使う
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#Glue.Client.create_partition
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#Glue.Client.batch_create_partition
【4】パーティション更新
* update_partition() / batch_update_partition() を使う
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#Glue.Client.update_partition
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#Glue.Client.batch_update_partition
関連記事
AWS Glue ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/01/221926
AWS Glue ~ 基本編 / クローラ ~
https://dk521123.hatenablog.com/entry/2019/12/01/003455
AWS Glue ~ Boto3 / 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/14/000000
AWS Glue ~ Boto3 / 基本編 ~
https://dk521123.hatenablog.com/entry/2021/04/17/001930
AWS Glue ~ Boto3 / セキュリティ設定編 ~
https://dk521123.hatenablog.com/entry/2020/04/08/171208
AWS Glue ~ Boto3 / Glue connection編 ~
https://dk521123.hatenablog.com/entry/2020/01/29/224525
AWS Glue ~ Boto3 / DB・テーブル操作編 ~
https://dk521123.hatenablog.com/entry/2021/06/11/164015
AWS Glue ~ クローリング結果の確認画面 ~
https://dk521123.hatenablog.com/entry/2021/05/28/142153
Glue から DataCatalogテーブル に対して Spark SQLを実行する
https://dk521123.hatenablog.com/entry/2021/05/11/220731
Glue Job から パーティションを更新することを考える
https://dk521123.hatenablog.com/entry/2021/05/15/130604
テーブルアクセス時に例外「Vertex failed, ... InvalidInputException」が発生する
https://dk521123.hatenablog.com/entry/2021/07/06/120134