本文为您介绍MaxCompute维表的DDL定义、WITH参数、CACHE参数、类型映射和常见问题。
什么是MaxCompute
大数据计算服务MaxCompute(原名ODPS)是一种快速、完全托管的EB级数据仓库解决方案,致力于批量结构化数据的存储和计算,提供海量数据仓库的解决方案及分析建模服务。MaxCompute详情请参见什么是MaxCompute。
前提条件
已创建MaxCompute表,详情请参见创建表。
使用限制
仅Flink计算引擎VVR 2.0.0及以上版本支持MaxCompute Connector。
DDL定义
create table odps_dim(
id VARCHAR,
name VARCHAR,
age int,
PRIMARY KEY (id, name) not enforced
) with (
'connector' = 'odps',
'endpoint' = '<yourEndpoint>',
'tunnelEndpoint' = '<yourTunnelEndpoint>',
'project' = '<yourProjectName>',
'tablename' = '<yourTableName>',
'accessid' = '<yourAccessKeyId>',
'accesskey' = '<yourAccessKeySecret>',
'partition' = 'ds=2018****',
'cache' = 'ALL'
);
- 在维表进行JOIN时,ON条件必须包含所有主键的等值条件。
- 不支持将MaxCompute维表分区列写入DDL定义中。
- 主键字段必须按照PRIMARY KEY括号中字段的先后顺序,放在非主键字段之前。
- 声明维表时,定义主键,则实现一对一需求。如果您需要实现一对多需求,则不定义主键即可。
WITH参数
参数 | 说明 | 是否必填 | 备注 |
---|---|---|---|
connector | 维表类型。 | 是 | 固定值为odps 。
|
endPoint | MaxCompute服务地址。 | 是 | 请参见Endpoint。 |
tunnelEndpoint | MaxCompute Tunnel服务的连接地址。 | 是 | 请参见Endpoint。 说明 VPC环境下为必填。
|
project | MaxCompute项目名称。 | 是 | 无。 |
tableName | 表名。 | 是 | 无。 |
accessId | AccessKey ID。 | 是 | 无。 |
accessKey | AccessKey Secret。 | 是 | 无。 |
partition | 分区名。 | 否 |
|
compressAlgorithm | MaxCompute Tunnel使用的压缩算法。 | 否 | 参数取值如下:
说明
|
CACHE参数
参数 | 参数说明 | 备注 |
---|---|---|
cache | 缓存策略。 | 目前MaxCompute维表仅支持ALL 策略,必须显式声明。
ALL策略:缓存维表里的所有数据。在Job运行前,系统会将维表中所有数据加载到Cache中,之后所有的维表查询都会通过Cache进行。如果在Cache中无法找到数据,则KEY不存在,并在Cache过期后重新加载一遍全量Cache。 适用于远程表数据量小且MISS KEY(源表数据和维表JOIN时,ON条件无法关联)特别多的场景。需要配置缓存更新时间间隔(cacheTTLMs)和更新时间黑名单(cacheReloadTimeBlackList)参数。 说明
|
cacheSize | 缓存大小。 | 可以设置缓存大小,MaxCompute默认缓存值为100000行。
如果您的数据超过100000行,建议设置cacheSize参数值大于实际值,否则会报错 |
cacheTTLMs | 缓存超时时间。 | 单位为毫秒,如果cache选择为ALL 策略,则为缓存加载的间隔时间,默认为不重新加载。
|
cacheReloadTimeBlackList | 更新时间黑名单。在缓存策略选择为ALL时,启用更新时间黑名单,防止在此时间内做Cache更新(例如双11场景)。 | 默认为空,格式为2017-10-24 14:00 -> 2017-10-24 15:00, 2017-11-10 23:30 -> 2017-11-11 08:00 。分隔符的使用情况如下所示:
|
类型映射
MaxCompute字段类型 | Flink字段类型 |
---|---|
TINYINT | TINYINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
BOOLEAN | BOOLEAN |
DATETIME | TIMESTAMP |
TIMESTAMP | TIMESTAMP |
VARCHAR | VARCHAR |
STRING | VARCHAR |
DECIMAL | DECIMAL |
BINARY | VARBINARY |