Skip to content

Commit 8b22173

Browse files
author
AWS
committed
AWS Glue Update: AWS Glue is introducing two new optimizers for Apache Iceberg tables: snapshot retention and orphan file deletion. Customers can enable these optimizers and customize their configurations to perform daily maintenance tasks on their Iceberg tables based on their specific requirements.
1 parent 7774dcc commit 8b22173

File tree

3 files changed

+221
-13
lines changed

3 files changed

+221
-13
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "feature",
3+
"category": "AWS Glue",
4+
"contributor": "",
5+
"description": "AWS Glue is introducing two new optimizers for Apache Iceberg tables: snapshot retention and orphan file deletion. Customers can enable these optimizers and customize their configurations to perform daily maintenance tasks on their Iceberg tables based on their specific requirements."
6+
}

services/glue/src/main/resources/codegen-resources/paginators-1.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,8 @@
199199
"ListTableOptimizerRuns": {
200200
"input_token": "NextToken",
201201
"limit_key": "MaxResults",
202-
"output_token": "NextToken"
202+
"output_token": "NextToken",
203+
"result_key": "TableOptimizerRuns"
203204
},
204205
"ListTriggers": {
205206
"input_token": "NextToken",

services/glue/src/main/resources/codegen-resources/service-2.json

Lines changed: 213 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,11 @@
216216
"input":{"shape":"BatchGetTableOptimizerRequest"},
217217
"output":{"shape":"BatchGetTableOptimizerResponse"},
218218
"errors":[
219-
{"shape":"InternalServiceException"}
219+
{"shape":"EntityNotFoundException"},
220+
{"shape":"InvalidInputException"},
221+
{"shape":"AccessDeniedException"},
222+
{"shape":"InternalServiceException"},
223+
{"shape":"ThrottlingException"}
220224
],
221225
"documentation":"<p>Returns the configuration for the specified table optimizers.</p>"
222226
},
@@ -717,10 +721,12 @@
717721
"output":{"shape":"CreateTableOptimizerResponse"},
718722
"errors":[
719723
{"shape":"EntityNotFoundException"},
724+
{"shape":"ValidationException"},
720725
{"shape":"InvalidInputException"},
721726
{"shape":"AccessDeniedException"},
722727
{"shape":"AlreadyExistsException"},
723-
{"shape":"InternalServiceException"}
728+
{"shape":"InternalServiceException"},
729+
{"shape":"ThrottlingException"}
724730
],
725731
"documentation":"<p>Creates a new table optimizer for a specific function. <code>compaction</code> is the only currently supported optimizer type.</p>"
726732
},
@@ -1152,7 +1158,8 @@
11521158
{"shape":"EntityNotFoundException"},
11531159
{"shape":"InvalidInputException"},
11541160
{"shape":"AccessDeniedException"},
1155-
{"shape":"InternalServiceException"}
1161+
{"shape":"InternalServiceException"},
1162+
{"shape":"ThrottlingException"}
11561163
],
11571164
"documentation":"<p>Deletes an optimizer and all associated metadata for a table. The optimization will no longer be performed on the table.</p>"
11581165
},
@@ -2111,7 +2118,8 @@
21112118
{"shape":"EntityNotFoundException"},
21122119
{"shape":"InvalidInputException"},
21132120
{"shape":"AccessDeniedException"},
2114-
{"shape":"InternalServiceException"}
2121+
{"shape":"InternalServiceException"},
2122+
{"shape":"ThrottlingException"}
21152123
],
21162124
"documentation":"<p>Returns the configuration of all optimizers associated with a specified table.</p>"
21172125
},
@@ -2707,7 +2715,9 @@
27072715
{"shape":"EntityNotFoundException"},
27082716
{"shape":"AccessDeniedException"},
27092717
{"shape":"InvalidInputException"},
2710-
{"shape":"InternalServiceException"}
2718+
{"shape":"ValidationException"},
2719+
{"shape":"InternalServiceException"},
2720+
{"shape":"ThrottlingException"}
27112721
],
27122722
"documentation":"<p>Lists the history of previous optimizer runs for a specific table.</p>"
27132723
},
@@ -3643,7 +3653,10 @@
36433653
{"shape":"EntityNotFoundException"},
36443654
{"shape":"InvalidInputException"},
36453655
{"shape":"AccessDeniedException"},
3646-
{"shape":"InternalServiceException"}
3656+
{"shape":"ValidationException"},
3657+
{"shape":"InternalServiceException"},
3658+
{"shape":"ThrottlingException"},
3659+
{"shape":"ConcurrentModificationException"}
36473660
],
36483661
"documentation":"<p>Updates the configuration for an existing table optimizer.</p>"
36493662
},
@@ -4931,7 +4944,7 @@
49314944
},
49324945
"tableOptimizer":{
49334946
"shape":"TableOptimizer",
4934-
"documentation":"<p>A <code>TableOptimizer</code> object that contains details on the configuration and last run of a table optimzer.</p>"
4947+
"documentation":"<p>A <code>TableOptimizer</code> object that contains details on the configuration and last run of a table optimizer.</p>"
49354948
}
49364949
},
49374950
"documentation":"<p>Contains details for one of the table optimizers returned by the <code>BatchGetTableOptimizer</code> operation.</p>"
@@ -6432,6 +6445,16 @@
64326445
"min":1,
64336446
"pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
64346447
},
6448+
"CompactionMetrics":{
6449+
"type":"structure",
6450+
"members":{
6451+
"IcebergMetrics":{
6452+
"shape":"IcebergCompactionMetrics",
6453+
"documentation":"<p>A structure containing the Iceberg compaction metrics for the optimizer run.</p>"
6454+
}
6455+
},
6456+
"documentation":"<p>A structure that contains compaction metrics for the optimizer run.</p>"
6457+
},
64356458
"Comparator":{
64366459
"type":"string",
64376460
"enum":[
@@ -14253,6 +14276,28 @@
1425314276
"type":"string",
1425414277
"pattern":"^arn:aws(-(cn|us-gov|iso(-[bef])?))?:iam::[0-9]{12}:role/.+"
1425514278
},
14279+
"IcebergCompactionMetrics":{
14280+
"type":"structure",
14281+
"members":{
14282+
"NumberOfBytesCompacted":{
14283+
"shape":"metricCounts",
14284+
"documentation":"<p>The number of bytes removed by the compaction job run.</p>"
14285+
},
14286+
"NumberOfFilesCompacted":{
14287+
"shape":"metricCounts",
14288+
"documentation":"<p>The number of files removed by the compaction job run.</p>"
14289+
},
14290+
"NumberOfDpus":{
14291+
"shape":"dpuCounts",
14292+
"documentation":"<p>The number of DPU hours consumed by the job.</p>"
14293+
},
14294+
"JobDurationInHour":{
14295+
"shape":"dpuDurationInHour",
14296+
"documentation":"<p>The duration of the job in hours.</p>"
14297+
}
14298+
},
14299+
"documentation":"<p>Compaction metrics for Iceberg for the optimizer run.</p>"
14300+
},
1425614301
"IcebergInput":{
1425714302
"type":"structure",
1425814303
"required":["MetadataOperation"],
@@ -14268,6 +14313,82 @@
1426814313
},
1426914314
"documentation":"<p>A structure that defines an Apache Iceberg metadata table to create in the catalog.</p>"
1427014315
},
14316+
"IcebergOrphanFileDeletionConfiguration":{
14317+
"type":"structure",
14318+
"members":{
14319+
"orphanFileRetentionPeriodInDays":{
14320+
"shape":"NullableInteger",
14321+
"documentation":"<p>The number of days that orphan files should be retained before file deletion. If an input is not provided, the default value 3 will be used.</p>"
14322+
},
14323+
"location":{
14324+
"shape":"MessageString",
14325+
"documentation":"<p>Specifies a directory in which to look for files (defaults to the table's location). You may choose a sub-directory rather than the top-level table location.</p>"
14326+
}
14327+
},
14328+
"documentation":"<p>The configuration for an Iceberg orphan file deletion optimizer.</p>"
14329+
},
14330+
"IcebergOrphanFileDeletionMetrics":{
14331+
"type":"structure",
14332+
"members":{
14333+
"NumberOfOrphanFilesDeleted":{
14334+
"shape":"metricCounts",
14335+
"documentation":"<p>The number of orphan files deleted by the orphan file deletion job run.</p>"
14336+
},
14337+
"NumberOfDpus":{
14338+
"shape":"dpuCounts",
14339+
"documentation":"<p>The number of DPU hours consumed by the job.</p>"
14340+
},
14341+
"JobDurationInHour":{
14342+
"shape":"dpuDurationInHour",
14343+
"documentation":"<p>The duration of the job in hours.</p>"
14344+
}
14345+
},
14346+
"documentation":"<p>Orphan file deletion metrics for Iceberg for the optimizer run.</p>"
14347+
},
14348+
"IcebergRetentionConfiguration":{
14349+
"type":"structure",
14350+
"members":{
14351+
"snapshotRetentionPeriodInDays":{
14352+
"shape":"NullableInteger",
14353+
"documentation":"<p>The number of days to retain the Iceberg snapshots. If an input is not provided, the corresponding Iceberg table configuration field will be used or if not present, the default value 5 will be used.</p>"
14354+
},
14355+
"numberOfSnapshotsToRetain":{
14356+
"shape":"NullableInteger",
14357+
"documentation":"<p>The number of Iceberg snapshots to retain within the retention period. If an input is not provided, the corresponding Iceberg table configuration field will be used or if not present, the default value 1 will be used.</p>"
14358+
},
14359+
"cleanExpiredFiles":{
14360+
"shape":"NullableBoolean",
14361+
"documentation":"<p>If set to false, snapshots are only deleted from table metadata, and the underlying data and metadata files are not deleted.</p>"
14362+
}
14363+
},
14364+
"documentation":"<p>The configuration for an Iceberg snapshot retention optimizer.</p>"
14365+
},
14366+
"IcebergRetentionMetrics":{
14367+
"type":"structure",
14368+
"members":{
14369+
"NumberOfDataFilesDeleted":{
14370+
"shape":"metricCounts",
14371+
"documentation":"<p>The number of data files deleted by the retention job run.</p>"
14372+
},
14373+
"NumberOfManifestFilesDeleted":{
14374+
"shape":"metricCounts",
14375+
"documentation":"<p>The number of manifest files deleted by the retention job run.</p>"
14376+
},
14377+
"NumberOfManifestListsDeleted":{
14378+
"shape":"metricCounts",
14379+
"documentation":"<p>The number of manifest lists deleted by the retention job run.</p>"
14380+
},
14381+
"NumberOfDpus":{
14382+
"shape":"dpuCounts",
14383+
"documentation":"<p>The number of DPU hours consumed by the job.</p>"
14384+
},
14385+
"JobDurationInHour":{
14386+
"shape":"dpuDurationInHour",
14387+
"documentation":"<p>The duration of the job in hours.</p>"
14388+
}
14389+
},
14390+
"documentation":"<p>Snapshot retention metrics for Iceberg for the optimizer run.</p>"
14391+
},
1427114392
"IcebergTarget":{
1427214393
"type":"structure",
1427314394
"members":{
@@ -17283,6 +17404,26 @@
1728317404
"type":"list",
1728417405
"member":{"shape":"Order"}
1728517406
},
17407+
"OrphanFileDeletionConfiguration":{
17408+
"type":"structure",
17409+
"members":{
17410+
"icebergConfiguration":{
17411+
"shape":"IcebergOrphanFileDeletionConfiguration",
17412+
"documentation":"<p>The configuration for an Iceberg orphan file deletion optimizer.</p>"
17413+
}
17414+
},
17415+
"documentation":"<p>The configuration for an orphan file deletion optimizer.</p>"
17416+
},
17417+
"OrphanFileDeletionMetrics":{
17418+
"type":"structure",
17419+
"members":{
17420+
"IcebergMetrics":{
17421+
"shape":"IcebergOrphanFileDeletionMetrics",
17422+
"documentation":"<p>A structure containing the Iceberg orphan file deletion metrics for the optimizer run.</p>"
17423+
}
17424+
},
17425+
"documentation":"<p>A structure that contains orphan file deletion metrics for the optimizer run.</p>"
17426+
},
1728617427
"OtherMetadataValueList":{
1728717428
"type":"list",
1728817429
"member":{"shape":"OtherMetadataValueListItem"}
@@ -18593,6 +18734,26 @@
1859318734
}
1859418735
}
1859518736
},
18737+
"RetentionConfiguration":{
18738+
"type":"structure",
18739+
"members":{
18740+
"icebergConfiguration":{
18741+
"shape":"IcebergRetentionConfiguration",
18742+
"documentation":"<p>The configuration for an Iceberg snapshot retention optimizer.</p>"
18743+
}
18744+
},
18745+
"documentation":"<p>The configuration for a snapshot retention optimizer.</p>"
18746+
},
18747+
"RetentionMetrics":{
18748+
"type":"structure",
18749+
"members":{
18750+
"IcebergMetrics":{
18751+
"shape":"IcebergRetentionMetrics",
18752+
"documentation":"<p>A structure containing the Iceberg retention metrics for the optimizer run.</p>"
18753+
}
18754+
},
18755+
"documentation":"<p>A structure that contains retention metrics for the optimizer run.</p>"
18756+
},
1859618757
"Role":{"type":"string"},
1859718758
"RoleArn":{
1859818759
"type":"string",
@@ -18641,7 +18802,7 @@
1864118802
"documentation":"<p>The duration of the job in hours.</p>"
1864218803
}
1864318804
},
18644-
"documentation":"<p>Metrics for the optimizer run.</p>"
18805+
"documentation":"<p>Metrics for the optimizer run.</p> <p>This structure is deprecated. See the individual metric members for compaction, retention, and orphan file deletion.</p>"
1864518806
},
1864618807
"RunStatementRequest":{
1864718808
"type":"structure",
@@ -21558,7 +21719,7 @@
2155821719
"members":{
2155921720
"type":{
2156021721
"shape":"TableOptimizerType",
21561-
"documentation":"<p>The type of table optimizer. Currently, the only valid value is <code>compaction</code>.</p>"
21722+
"documentation":"<p>The type of table optimizer. The valid values are:</p> <ul> <li> <p> <code>compaction</code>: for managing compaction with a table optimizer.</p> </li> <li> <p> <code>retention</code>: for managing the retention of snapshot with a table optimizer.</p> </li> <li> <p> <code>orphan_file_deletion</code>: for managing the deletion of orphan files with a table optimizer.</p> </li> </ul>"
2156221723
},
2156321724
"configuration":{
2156421725
"shape":"TableOptimizerConfiguration",
@@ -21580,7 +21741,15 @@
2158021741
},
2158121742
"enabled":{
2158221743
"shape":"NullableBoolean",
21583-
"documentation":"<p>Whether table optimization is enabled. </p>"
21744+
"documentation":"<p>Whether table optimization is enabled.</p>"
21745+
},
21746+
"retentionConfiguration":{
21747+
"shape":"RetentionConfiguration",
21748+
"documentation":"<p>The configuration for a snapshot retention optimizer.</p>"
21749+
},
21750+
"orphanFileDeletionConfiguration":{
21751+
"shape":"OrphanFileDeletionConfiguration",
21752+
"documentation":"<p>The configuration for an orphan file deletion optimizer.</p>"
2158421753
}
2158521754
},
2158621755
"documentation":"<p>Contains details on the configuration of a table optimizer. You pass this configuration when creating or updating a table optimizer.</p>"
@@ -21611,11 +21780,25 @@
2161121780
},
2161221781
"metrics":{
2161321782
"shape":"RunMetrics",
21614-
"documentation":"<p>A <code>RunMetrics</code> object containing metrics for the optimizer run.</p>"
21783+
"documentation":"<p>A <code>RunMetrics</code> object containing metrics for the optimizer run.</p> <p>This member is deprecated. See the individual metric members for compaction, retention, and orphan file deletion.</p>",
21784+
"deprecated":true,
21785+
"deprecatedMessage":"Metrics has been replaced by optimizer type specific metrics such as IcebergCompactionMetrics"
2161521786
},
2161621787
"error":{
2161721788
"shape":"MessageString",
2161821789
"documentation":"<p>An error that occured during the optimizer run.</p>"
21790+
},
21791+
"compactionMetrics":{
21792+
"shape":"CompactionMetrics",
21793+
"documentation":"<p>A <code>CompactionMetrics</code> object containing metrics for the optimizer run.</p>"
21794+
},
21795+
"retentionMetrics":{
21796+
"shape":"RetentionMetrics",
21797+
"documentation":"<p>A <code>RetentionMetrics</code> object containing metrics for the optimizer run.</p>"
21798+
},
21799+
"orphanFileDeletionMetrics":{
21800+
"shape":"OrphanFileDeletionMetrics",
21801+
"documentation":"<p>An <code>OrphanFileDeletionMetrics</code> object containing metrics for the optimizer run.</p>"
2161921802
}
2162021803
},
2162121804
"documentation":"<p>Contains details for a table optimizer run.</p>"
@@ -21627,7 +21810,11 @@
2162721810
},
2162821811
"TableOptimizerType":{
2162921812
"type":"string",
21630-
"enum":["compaction"]
21813+
"enum":[
21814+
"compaction",
21815+
"retention",
21816+
"orphan_file_deletion"
21817+
]
2163121818
},
2163221819
"TablePrefix":{
2163321820
"type":"string",
@@ -21920,6 +22107,17 @@
2192022107
"FIND_MATCHES"
2192122108
]
2192222109
},
22110+
"ThrottlingException":{
22111+
"type":"structure",
22112+
"members":{
22113+
"Message":{
22114+
"shape":"MessageString",
22115+
"documentation":"<p>A message describing the problem.</p>"
22116+
}
22117+
},
22118+
"documentation":"<p>The throttling threshhold was exceeded.</p>",
22119+
"exception":true
22120+
},
2192322121
"Timeout":{
2192422122
"type":"integer",
2192522123
"box":true,
@@ -23902,6 +24100,9 @@
2390224100
"min":1
2390324101
},
2390424102
"double":{"type":"double"},
24103+
"dpuCounts":{"type":"integer"},
24104+
"dpuDurationInHour":{"type":"double"},
24105+
"metricCounts":{"type":"long"},
2390524106
"tableNameString":{
2390624107
"type":"string",
2390724108
"min":1

0 commit comments

Comments
 (0)