分区 API
分区 API 介绍用于处理分区的数据类型和操作。
数据类型
Partition 结构
表示表数据的一部分。
字段
-
分区的值。
-
DatabaseName– UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要在其中创建分区的目录数据库的名称。
-
TableName– UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要在其中创建分区的数据库表的名称。
-
创建分区的时间。
-
上次访问分区的时间。
-
StorageDescriptor– 一个 StorageDescriptor 对象。提供有关存储分区的物理位置的信息。
-
每个键是一个键字符串,不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。
每个值是一个 UTF-8 字符串,不超过 512000 个字节。
这些键值对用于定义分区参数。
-
上次为该分区计算列统计信息的时间。
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区所在的数据目录的 ID。
PartitionInput 结构
用于创建和更新分区的结构。
字段
-
分区的值。尽管开发工具包不需要此参数,但您必须为有效输入指定此参数。
新分区的键值必须作为 String 对象数组传递,这些对象的顺序必须与 Amazon S3 前缀中出现的分区键的顺序相同。否则,Amazon Glue 会将值添加到错误的键。
-
上次访问分区的时间。
-
StorageDescriptor– 一个 StorageDescriptor 对象。提供有关存储分区的物理位置的信息。
-
每个键是一个键字符串,不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。
每个值是一个 UTF-8 字符串,不超过 512000 个字节。
这些键值对用于定义分区参数。
-
上次为该分区计算列统计信息的时间。
PartitionSpecWithSharedStorageDescriptor 结构
共享物理位置的分区的分区规范。
字段
-
StorageDescriptor– 一个 StorageDescriptor 对象。共享的物理存储信息。
-
Partitions– 分区 对象的数组。共享该物理位置的分区的列表。
PartitionListComposingSpec 结构
列出相关的分区。
字段
-
Partitions– 分区 对象的数组。编制规范中的分区的列表。
PartitionSpecProxy 结构
提供指定分区的根路径。
字段
-
DatabaseName– UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区所在的目录数据库。
-
TableName– UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。包含分区的表的名称。
-
RootPath– UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。用于寻址分区的代理的根路径。
-
PartitionSpecWithSharedSD– 一个 PartitionSpecWithSharedStorageDescriptor 对象。共享同一物理存储位置的分区的规范。
-
PartitionListComposingSpec– 一个 PartitionListComposingSpec 对象。指定分区的列表。
PartitionValueList 结构
包含定义分区的值的列表。
Segment 结构
定义表分区的非重叠区域,从而允许并行运行多个请求。
字段
PartitionError 结构
包含有关分区错误的信息。
字段
-
PartitionValues– UTF-8 字符串数组。用于定义分区的值。
-
ErrorDetail– 一个 ErrorDetail 对象。有关分区错误的详细信息。
BatchUpdatePartitionFailureEntry 结构
包含有关批量更新分区错误的信息。
字段
-
PartitionValueList– UTF-8 字符串数组,不超过 100 个字符串。用于定义分区的值的列表。
-
ErrorDetail– 一个 ErrorDetail 对象。有关批量更新分区错误的详细信息。
BatchUpdatePartitionRequestEntry 结构
该结构包含用于更新分区的值和结构。
字段
-
PartitionValueList– 必填:UTF-8 字符串数组,不超过 100 个字符串。用于定义分区的值的列表。
-
PartitionInput– 必填:一个 PartitionInput 对象。用于更新分区的结构。
操作
CreatePartition 操作(Python:create_partition)
创建新的分区。
请求
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要在其中创建分区的目录的 Amazon 账户 ID。
-
DatabaseName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要在其中创建分区的元数据数据库的名称。
-
TableName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要在其中创建分区的元数据表的名称。
-
PartitionInput– 必填:一个 PartitionInput 对象。一个用于定义要创建的分区的
PartitionInput结构。
响应
无响应参数。
错误
InvalidInputExceptionAlreadyExistsExceptionResourceNumberLimitExceededExceptionInternalServiceExceptionEntityNotFoundExceptionOperationTimeoutExceptionGlueEncryptionException
BatchCreatePartition 操作(Python:batch_create_partition)
在批量操作中创建一个或多个分区。
请求
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要在其中创建分区的目录的 ID。目前,它应该为 Amazon 账户 ID。
-
DatabaseName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要在其中创建分区的元数据数据库的名称。
-
TableName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要在其中创建分区的元数据表的名称。
-
PartitionInputList– 必填:PartitionInput 对象的数组,不超过 100 个结构。用于定义要创建的分区的
PartitionInput结构的列表。
响应
-
Errors– PartitionError 对象的数组。在尝试创建请求的分区时遇到错误。
错误
InvalidInputExceptionAlreadyExistsExceptionResourceNumberLimitExceededExceptionInternalServiceExceptionEntityNotFoundExceptionOperationTimeoutExceptionGlueEncryptionException
UpdatePartition 操作(Python:update_partition)
更新分区。
请求
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要更新的分区所在的数据目录的 ID。如果没有提供,则默认情况下使用 Amazon 账户 ID。
-
DatabaseName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。所涉表所在的目录数据库的名称。
-
TableName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要更新的分区所在的表的名称。
-
PartitionValueList– 必填:UTF-8 字符串数组,不超过 100 个字符串。用于定义分区更新的分区键值的列表。
-
PartitionInput– 必填:一个 PartitionInput 对象。要将分区更新到的新分区对象。
此
Values属性无法更改。如果要更改分区的分区键值,请删除并重新创建分区。
响应
无响应参数。
错误
EntityNotFoundExceptionInvalidInputExceptionInternalServiceExceptionOperationTimeoutExceptionGlueEncryptionException
DeletePartition 操作(Python:delete_partition)
删除指定的分区。
请求
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要删除的分区所在的数据目录的 ID。如果没有提供,则默认情况下使用 Amazon 账户 ID。
-
DatabaseName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。所涉表所在的目录数据库的名称。
-
TableName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。包含要删除的分区的表的名称。
-
PartitionValues– 必填:UTF-8 字符串数组。用于定义分区的值。
响应
无响应参数。
错误
EntityNotFoundExceptionInvalidInputExceptionInternalServiceExceptionOperationTimeoutException
BatchDeletePartition 操作(Python:batch_delete_partition)
在批量操作中删除一个或多个分区。
请求
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要删除的分区所在的数据目录的 ID。如果没有提供,则默认情况下使用 Amazon 账户 ID。
-
DatabaseName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。所涉表所在的目录数据库的名称。
-
TableName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。包含要删除的分区的表的名称。
-
PartitionsToDelete– 必填:PartitionValueList 对象的数组,不超过 25 个结构。用于定义要删除的分区的
PartitionInput结构的列表。
响应
-
Errors– PartitionError 对象的数组。在尝试删除请求的分区时遇到错误。
错误
InvalidInputExceptionEntityNotFoundExceptionInternalServiceExceptionOperationTimeoutException
GetPartition 操作(Python:get_partition)
检索有关指定分区的信息。
请求
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。所涉分区所在的数据目录的 ID。如果没有提供,则默认情况下使用 Amazon 账户 ID。
-
DatabaseName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区所在的目录数据库的名称。
-
TableName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区的表的名称。
-
PartitionValues– 必填:UTF-8 字符串数组。用于定义分区的值。
响应
-
Partition– 一个 分区 对象。请求的信息,采用
Partition对象的形式。
错误
EntityNotFoundExceptionInvalidInputExceptionInternalServiceExceptionOperationTimeoutExceptionGlueEncryptionException
GetPartitions 操作(Python:get_partitions)
检索有关表中的分区的信息。
请求
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。所涉分区所在的数据目录的 ID。如果没有提供,则默认情况下使用 Amazon 账户 ID。
-
DatabaseName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区所在的目录数据库的名称。
-
TableName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区的表的名称。
-
Expression– 谓词字符串,不超过 2048 个字节,与 URI address multi-line string pattern 匹配。筛选要返回的分区的表达式。
该表达式使用类似于 SQL
WHERE筛选条件子句的 SQL 语法。SQL 语句解析器 JSQLParser可解析表达式。 运算符:以下是您可以在
ExpressionAPI 调用中使用的运算符:- =
-
检查两个操作数的值是否相等;如果是,则条件成立。
示例:假设“变量 a”保持 10,“变量 b”保持 20。
(a = b) 不成立。
- < >
-
检查两个操作数的值是否相等;如果值不相等,则条件成立。
示例:(a < > b) 成立。
- >
-
检查左操作数的值是否大于右操作数的值;如果是,则条件成立。
示例:(a > b) 不成立。
- <
-
检查左操作数的值是否小于右操作数的值;如果是,则条件成立。
示例:(a < b) 成立。
- >=
-
检查左操作数的值是否大于或等于右操作数的值;如果是,则条件成立。
示例:(a >= b) 不成立。
- <=
-
检查左操作数的值是否小于或等于右操作数的值;如果是,则条件成立。
示例:(a <= b) 成立。
- AND、OR、IN、BETWEEN、LIKE、NOT、IS NULL
-
逻辑运算符。
支持的分区键类型:以下是受支持的分区键。
-
string -
date -
timestamp -
int -
bigint -
long -
tinyint -
smallint -
decimal
如果遇到无效类型,则会引发异常。
以下列表显示了每种类型的有效运算符。定义爬网程序时,
partitionKey类型将创建为STRING,以与目录分区兼容。示例 API 调用:
表
twitter_partition有三个分区:year = 2015 year = 2016 year = 2017获取
year等于 2015 的分区aws glue get-partitions --database-name dbname --table-name twitter_partition --expression "year*=*'2015'"获取
year2016 至 2018 (不含)之间的分区aws glue get-partitions --database-name dbname --table-name twitter_partition --expression "year>'2016' AND year<'2018'"获取
year2015 至 2018(含)之间的分区 以下 API 调用彼此等效:aws glue get-partitions --database-name dbname --table-name twitter_partition --expression "year>='2015' AND year<='2018'" aws glue get-partitions --database-name dbname --table-name twitter_partition --expression "year BETWEEN 2015 AND 2018" aws glue get-partitions --database-name dbname --table-name twitter_partition --expression "year IN (2015,2016,2017,2018)"通配符分区筛选条件,其中以下调用输出为分区年份=2017。
LIKE中不支持正则表达式。aws glue get-partitions --database-name dbname --table-name twitter_partition --expression "year LIKE '%7'" -
延续令牌 (如果这不是检索这些分区的第一个调用)。
-
Segment– 一个 Segment 对象。要在该请求中扫描的表的片段。
-
MaxResults– 数字(整数),不小于 1 或大于 1000。要在单个响应中返回的最大分区数。
-
如果为真,则指定不返回分区列架构。当您只对分区值或位置等其他分区属性感兴趣时很有用。这种方法通过不返回重复数据来避免大型响应的问题。
-
TransactionId– UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Custom string pattern #11 匹配。在该 ID 处读取分区内容的事务 ID。
-
截至读取分区内容的时间。如果未设置,将使用最近的事务提交时间。无法与
TransactionId一起指定。
响应
-
Partitions– 分区 对象的数组。请求的分区的列表。
-
延续令牌 (如果返回的分区列表不包括最后一个)。
错误
EntityNotFoundExceptionInvalidInputExceptionOperationTimeoutExceptionInternalServiceExceptionGlueEncryptionExceptionInvalidStateExceptionResourceNotReadyException
BatchGetPartition 操作(Python:batch_get_partition)
在批处理请求中检索分区。
请求
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。所涉分区所在的数据目录的 ID。如果没有提供,则默认情况下使用 Amazon 账户 ID。
-
DatabaseName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区所在的目录数据库的名称。
-
TableName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区的表的名称。
-
PartitionsToGet– 必填:PartitionValueList 对象的数组,不超过 1000 个结构。用于标识要检索的分区的分区值的列表。
响应
-
Partitions– 分区 对象的数组。请求的分区的列表。
-
UnprocessedKeys– PartitionValueList 对象数组,不超过 1000 个结构。请求中未返回分区的分区值的列表。
错误
InvalidInputExceptionEntityNotFoundExceptionOperationTimeoutExceptionInternalServiceExceptionGlueEncryptionExceptionInvalidStateException
BatchUpdatePartition 操作(Python:batch_update_partition)
在分批操作中更新一个或多个分区。
请求
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要在其中更新分区的目录的 ID。目前,它应该为 Amazon 账户 ID。
-
DatabaseName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要在其中更新分区的元数据数据库的名称。
-
TableName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。要在其中更新分区的元数据表的名称。
-
Entries– 必填:BatchUpdatePartitionRequestEntry对象的数组,不少于 1 个或不超过 100 个结构。最多 100 个
BatchUpdatePartitionRequestEntry对象进行更新的列表。
响应
-
Errors– BatchUpdatePartitionFailureEntry 对象的数组。在尝试更新请求的分区时遇到错误。
BatchUpdatePartitionFailureEntry对象的列表。
错误
InvalidInputExceptionEntityNotFoundExceptionOperationTimeoutExceptionInternalServiceExceptionGlueEncryptionException
GetColumnStatisticsForPartition 操作(Python:get_column_statistics_for_partition)
检索列的分区统计数据信息。
此操作所需的 Identity and Access Management(IAM)权限是 GetPartition。
请求
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。所涉分区所在的数据目录的 ID。如果没有提供,则默认情况下使用 Amazon 账户 ID。
-
DatabaseName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区所在的目录数据库的名称。
-
TableName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区的表的名称。
-
PartitionValues– 必填:UTF-8 字符串数组。用于标识分区的分区值的列表。
-
ColumnNames– 必填:UTF-8 字符串数组,不超过 100 个字符串。列名称的列表。
响应
-
ColumnStatisticsList– ColumnStatistics 对象的数组。检索失败的 ColumnStatistics 的列表。
-
Errors– ColumnError 对象的数组。检索列统计数据时出错。
错误
EntityNotFoundExceptionInvalidInputExceptionInternalServiceExceptionOperationTimeoutExceptionGlueEncryptionException
UpdateColumnStatisticsForPartition 操作(Python:update_column_statistics_for_partition)
创建或更新分区统计数据列信息。
此操作所需的 Identity and Access Management(IAM)权限是 UpdatePartition。
请求
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。所涉分区所在的数据目录的 ID。如果没有提供,则默认情况下使用 Amazon 账户 ID。
-
DatabaseName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区所在的目录数据库的名称。
-
TableName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区的表的名称。
-
PartitionValues– 必填:UTF-8 字符串数组。用于标识分区的分区值的列表。
-
ColumnStatisticsList– 必填:ColumnStatistics 对象的数组,不超过 25 个结构。列统计数据的列表。
响应
-
Errors– ColumnStatisticsError 对象的数组。更新列统计数据时出错。
错误
EntityNotFoundExceptionInvalidInputExceptionInternalServiceExceptionOperationTimeoutExceptionGlueEncryptionException
DeleteColumnStatisticsForPartition 操作(Python:delete_column_statistics_for_partition)
删除列的分区列统计数据信息。
此操作所需的 Identity and Access Management(IAM)权限是 DeletePartition。
请求
-
CatalogId– 目录 id 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。所涉分区所在的数据目录的 ID。如果没有提供,则默认情况下使用 Amazon 账户 ID。
-
DatabaseName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区所在的目录数据库的名称。
-
TableName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。分区的表的名称。
-
PartitionValues– 必填:UTF-8 字符串数组。用于标识分区的分区值的列表。
-
ColumnName– 必填:UTF-8 字符串,长度不少于 1 个字节或超过 255 个字节,与 Single-line string pattern 匹配。列的名称。
响应
无响应参数。
错误
EntityNotFoundExceptionInvalidInputExceptionInternalServiceExceptionOperationTimeoutExceptionGlueEncryptionException