跳到主要内容

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());