Table
Table
类代表ODPS中的表,可以用于进行表操作,比如表的查询、分区操作等。下面是Table
类的使用说明。
概览
创建表实例对象
要操作表,首先需要创建一个表的实例对象。
注意,获取表实例是一个lazy操作,即只有当调用Table
类的其他方法时,才会真正获取表的元数据信息。同时,只有表真实存在,才能获取到表实例。
Table table = odps.tables().get("table_project", "table_name");
当开启Schema功能后,可以传入schema参数,来获取指定Table实例。
Table table = odps.tables().get("table_project", "schema_name", "table_name");
表基本信息
Table
作为一个实现lazyload
功能的对象,只有在调用以下方法时,才会进行网络通信,获取真正的元数据信息。
同时,我们也可以手动调用reload()
方法,来达到同样的效果。
table.reload();
除非手动触发reload()
方法,否则Table在reload
一次之后默认使用缓存。
获取表名
String tableName = table.getName();
获取表结构
// 结构化数据
TableSchema tableSchema = table.getSchema();
// json类型数据
String jsonSchema = table.getJsonSchema();
tableSchema.getColumns(); // 获取data列(不包含分区列)
tableSchema.getPartitionColumns(); // 获取分区列
获取表所在项目名
String projectName = table.getProject();
获取表所在Schema名
需要开启Schema功能,才能正确获取该字段。
String schemaName = table.getSchemaName();
获取表注释
String comment = table.getComment();
获取表所属用户
String owner = table.getOwner();
获取表类型
Table.TableType tableType = table.getType();
目前表类型分被为以下四类
public enum TableType {
/**
* 常规maxcompute(odps)表
*/
MANAGED_TABLE,
/**
* 视图
* https://help.aliyun.com/zh/maxcompute/user-guide/view-related-operations
*/
VIRTUAL_VIEW,
/**
* 外表
* https://help.aliyun.com/zh/maxcompute/user-guide/external-data-sources
*/
EXTERNAL_TABLE,
/**
* 物化视图
* https://help.aliyun.com/zh/maxcompute/user-guide/materialized-views
*/
MATERIALIZED_VIEW
}
衍生表类型判断方法
table.isVirtualView();
table.isMaterializedView();
table.isExternalTable();
获取创建时间
Date createdTime = table.getCreatedTime();
获取最后修改时间
Date lastMetaModifiedTime = table.getLastMetaModifiedTime();
获取表存储大小
注意:此方法通常不保证和实际占用存储大小相同。单位为bytes
long size = table.getSize();
获取表数据数量
注意:此方法当无准确数据时,返回-1
long recordNum = table.getRecordNum();
获取表生命周期
单位为天
long lifeCycle = table.getLife();
获取Shard
Shard shard = table.getShard();