跳到主要内容

Partition

Partition 类代表 MaxCompute 中的表分区,用于查询分区基本信息和扩展信息。

获取实例

通过 Table 对象获取 Partition 实例:

Partition partition = table.getPartition(new PartitionSpec("dt='20250101'"));

获取 Partition 实例是 lazy 操作,只有调用属性方法时才会加载元数据。分区必须真实存在。

数据加载

Partition 实现 LazyLoad,首次调用属性方法时自动加载元数据。也可手动触发:

partition.reload();

reload() 后默认使用缓存,不会重复加载。

基本信息方法

getPartitionSpec

获取分区规格。

public PartitionSpec getPartitionSpec()

返回值PartitionSpec 对象


getCreatedTime

获取分区创建时间。

public Date getCreatedTime()

getLastMetaModifiedTime

获取分区元数据最后修改时间。

public Date getLastMetaModifiedTime()

getSize

获取分区存储大小。

public long getSize()

返回值:存储大小(字节)

此值通常不保证与实际占用存储完全一致。


getRecordNum

获取分区数据行数。

public long getRecordNum()

返回值:数据行数;无准确数据时返回 -1


getLifeCycle

获取分区生命周期。

public long getLifeCycle()

返回值:生命周期(天)


getLastDataModifiedTime

获取分区数据最后修改时间。

public Date getLastDataModifiedTime()

getLastDataAccessTime

获取分区数据最后访问时间。

public Date getLastDataAccessTime()

getStorageTierInfo

获取分区存储分层信息。

public StorageTierInfo getStorageTierInfo()

isExstore

判断分区是否为 Exstore 存储。

public boolean isExstore()

扩展信息方法

扩展信息在首次调用时加载,无法通过 reload() 刷新(因为这些信息通常随分区创建而确定)。

isArchived

查看分区是否进行过归档(archive)操作。

public boolean isArchived()

返回值true 已归档;false 未归档


getPhysicalSize

获取分区所占磁盘的物理大小。

public long getPhysicalSize()

返回值:物理大小(字节),为估计值


getFileNum

获取分区占用文件数。

public long getFileNum()

返回值:文件数量,为估计值


getReserved

获取扩展信息的保留字段。

public String getReserved()

返回值:JSON 字符串


getClusterInfo

获取 Cluster 信息。

public ClusterInfo getClusterInfo()

getCdcSize

获取 CDC 数据大小。

public long getCdcSize()

getCdcRecordNum

获取 CDC 数据行数。

public long getCdcRecordNum()

Tag 操作

getTags

获取分区标签列表。

public List<Tag> getTags()

getTags (指定列)

获取分区指定列的标签列表。

public List<Tag> getTags(String columnName)
参数类型说明
columnNameString列名

getSimpleTags

获取分区简单标签。

public Map<String, Map<String, String>> getSimpleTags()

getSimpleTags (指定列)

获取分区指定列的简单标签。

public Map<String, Map<String, String>> getSimpleTags(String columnName)
参数类型说明
columnNameString列名

addTag

为分区添加标签。

public void addTag(Tag tag) throws OdpsException
参数类型说明
tagTag标签对象

addTag (指定列)

为分区指定列添加标签。

public void addTag(Tag tag, List<String> columnNames) throws OdpsException
参数类型说明
tagTag标签对象
columnNamesList<String>列名列表

addSimpleTag

为分区添加简单标签。

public void addSimpleTag(String category, String key, String value) throws OdpsException
参数类型说明
categoryString标签分类
keyString标签键
valueString标签值

addSimpleTag (指定列)

为分区指定列添加简单标签。

public void addSimpleTag(String category, String key, String value, List<String> columnNames) throws OdpsException
参数类型说明
categoryString标签分类
keyString标签键
valueString标签值
columnNamesList<String>列名列表

removeTag

删除分区标签。

public void removeTag(Tag tag) throws OdpsException
参数类型说明
tagTag标签对象

removeTag (指定列)

删除分区指定列的标签。

public void removeTag(Tag tag, List<String> columnNames) throws OdpsException
参数类型说明
tagTag标签对象
columnNamesList<String>列名列表

removeSimpleTag

删除分区简单标签。

public void removeSimpleTag(String category, String key, String value) throws OdpsException
参数类型说明
categoryString标签分类
keyString标签键
valueString标签值

removeSimpleTag (指定列)

删除分区指定列的简单标签。

public void removeSimpleTag(String category, String key, String value, List<String> columnNames) throws OdpsException
参数类型说明
categoryString标签分类
keyString标签键
valueString标签值
columnNamesList<String>列名列表

State 管理

setState

设置分区状态(冻结/恢复)。

public void setState(State state) throws OdpsException
参数类型说明
stateState分区状态

使用示例

Table table = odps.tables().get("my_table");
Partition partition = table.getPartition(new PartitionSpec("dt='20250101'"));

// 基本信息
System.out.println("创建时间: " + partition.getCreatedTime());
System.out.println("存储大小: " + partition.getSize() + " bytes");
System.out.println("数据行数: " + partition.getRecordNum());

// 扩展信息
System.out.println("物理大小: " + partition.getPhysicalSize());
System.out.println("文件数: " + partition.getFileNum());
System.out.println("已归档: " + partition.isArchived());