表格存储使用MaxCompute创建外部表用时序表会报错?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用MaxCompute创建外部表时,如果尝试关联表格存储的时序表并出现报错,可能是由于以下原因导致的。以下是详细的分析和解决方法:
在表格存储中,时序表需要通过CreateTimeseriesTable
接口或控制台创建。如果时序表未正确创建,MaxCompute在创建外部表时会报错。
tablestore.table.name
参数一致。create -m timeseries -t mytable -ttl -1
其中,-m
指定表类型为时序表,-t
指定表名,-ttl
设置数据生命周期(默认值为-1
,表示数据永不过期)。
MaxCompute创建外部表时,需要正确配置STORED BY
、WITH SERDEPROPERTIES
和LOCATION
等参数。如果参数配置错误,可能会导致外部表无法正常访问时序表。
com.aliyun.odps.TableStoreStorageHandler
,这是MaxCompute内置的处理表格存储数据的StorageHandler。tablestore.columns.mapping
:指定MaxCompute列与表格存储时序表列的映射关系。对于时序表,主键列需以:
开头,例如:vid, :gt
。tablestore.table.name
:指定要访问的时序表名称。如果表名错误或不存在,会报错。CREATE EXTERNAL TABLE IF NOT EXISTS ots_vehicle_track
(
vid bigint,
gt bigint,
longitude double,
latitude double,
distance double,
speed double,
oil_consumption double
)
STORED BY 'com.aliyun.odps.TableStoreStorageHandler'
WITH SERDEPROPERTIES (
'tablestore.columns.mapping'=':vid, :gt, longitude, latitude, distance, speed, oil_consumption',
'tablestore.table.name'='vehicle_track'
)
LOCATION 'tablestore://cap1.cn-hangzhou.ots-internal.aliyuncs.com';
:
开头,否则会导致映射失败。tablestore.table.name
参数指定的表名必须与实际时序表名称一致。LOCATION
参数中的实例地址必须正确,建议使用内网地址以提高性能。MaxCompute主要支持宽表模型的计算与分析,而时序表属于时序模型。如果时序表的结构或数据模型不兼容,可能会导致外部表创建失败或查询报错。
如果创建外部表后执行查询时仍然报错,可以按照以下步骤排查问题:
SELECT vid, COUNT(*), AVG(speed), AVG(oil_consumption)
FROM ots_vehicle_track
WHERE vid < 4 AND gt < 1469171387
GROUP BY vid;
通过以上步骤,您可以逐步排查并解决MaxCompute创建外部表时关联时序表报错的问题。如果问题仍未解决,建议联系阿里云技术支持,提供详细的报错信息和操作日志以便进一步分析。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。