Presto中sync_partition_metadata查询报错,如何使其正常运行?
修复Presto同步分区元数据查询的语法错误
你的查询执行后触发如下语法错误:
Presto错误:第3行第18位:输入'.'不匹配。预期:'(', ')', ',', 'AS', 'CROSS', 'EXCEPT', 'FETCH', 'FULL', 'GROUP', 'HAVING', 'INNER', 'INTERSECT', 'JOIN', 'LEFT', 'LIMIT', 'MATCH_RECOGNIZE', 'NATURAL', 'OFFSET', 'ORDER', 'RIGHT', 'TABLESAMPLE', 'UNION', 'WHERE', 'WINDOW'
原因是Presto不支持将CALL语句嵌套作为SELECT的子查询,原写法违反了Presto的语法规则。
正确的查询写法
直接调用系统存储过程即可,不需要用SELECT包裹:
CALL system.sync_partition_metadata('schema', 'table', 'ADD') LIMIT 1000;
如果你的Presto版本不支持在CALL后直接追加LIMIT,可以执行不带限制的调用,存储过程返回的结果集会直接展示:
CALL system.sync_partition_metadata('schema', 'table', 'ADD');
补充说明
system.sync_partition_metadata是Presto内置的系统存储过程,用于同步指定表的分区元数据。它本身执行后会返回对应的结果集,无需通过SELECT语句包装查询。原写法试图将存储过程调用当作子查询嵌入SELECT中,导致语法解析失败。
内容的提问来源于stack exchange,提问作者user1055604
相关产品推荐
相关产品推荐

