dataworks按照文档执行报错?
create external table mf_oss_spe_pt (id int, name string)
partitioned by (pt1 string, pt2 string)
stored as TEXTFILE
with serdeproperties (
'odps.properties.rolearn'='acs:ram::1563281086590914:role/aliyunodpsdefaultrole'
)
location "oss://oss-cn-beijing-internal.aliyuncs.com/mfoss*/demo8/";
Caused by: com.aliyun.odps.rest.RestException: RequestId=65DC685C2EC9C83F0099D8C0,Code=ParseError,Message=ODPS-0130161:[10,1] Parse exception - invalid token 'WITH', expect 'SEMICOLON'
从您提供的错误信息来看,问题似乎出在CREATE EXTERNAL TABLE
语句的WITH SERDEPROPERTIES
部分。ODPS(Open Data Processing Service,阿里云开放数据处理服务)的语法可能与您尝试使用的Hive或其他大数据处理系统的语法有所不同。
在ODPS中,CREATE EXTERNAL TABLE
语句的WITH SERDEPROPERTIES
部分应该使用PROPERTIES
代替,并且通常用于指定表的序列化/反序列化(Serde)类和其他属性。此外,ODPS通常使用PARTITIONED BY
子句来定义分区列,而不是在WITH SERDEPROPERTIES
中指定分区。
根据您提供的表结构和需求,您可以尝试修改您的CREATE EXTERNAL TABLE
语句,如下所示:
CREATE EXTERNAL TABLE mf_oss_spe_pt (
id INT,
name STRING
)
PARTITIONED BY (pt1 STRING, pt2 STRING)
STORED AS TEXTFILE
LOCATION "oss://oss-cn-beijing-internal.aliyuncs.com/mfoss*/demo8/"
PROPERTIES (
'odps.properties.rolearn' = 'acs:ram::1563281086590914:role/aliyunodpsdefaultrole'
);
在这个修改后的语句中,我使用了PROPERTIES
子句来设置odps.properties.rolearn
属性,而不是WITH SERDEPROPERTIES
。同时,分区列的定义保持在PARTITIONED BY
子句中。
您好,遇到按照DataWorks文档操作报错的情况,一般情况下可能是参数导致的问题,这里查阅错误码ODPS-0130161的错误原因分析:调度参数未赋值或赋值出现异常,建议您先检查一下调度参数的赋值情况
详细内容参考文档:文档
在分析错误信息invalid token 'WITH', expect 'SEMICOLON'为无效的标记“WITH”,应为“SEMICOLON”,建议您检查一下这块的语法是否有问题。这两项都排除之后还是不行的话,建议您可以扫描下方二维码或电脑端点击这里 加入DataWorks钉钉交流群
在阿里云DataWorks中,创建外部表时遇到的错误“ODPS-0130161: Parse exception - invalid token 'WITH', expect 'SEMICOLON'”是由于语法错误导致的。在ODPS SQL(MaxCompute SQL)语法中,在定义CREATE EXTERNAL TABLE
语句后直接指定存储格式和位置,而不能直接使用WITH SERDEPROPERTIES
来指定角色相关的属性。
正确的方式来指定OSS外部表并设置访问角色信息应该是通过TBLPROPERTIES
而不是SERDEPROPERTIES
,并且在指定OSS位置之后需要以分号结束。因此,修正后的语句应该如下所示:
CREATE EXTERNAL TABLE mf_oss_spe_pt (
id INT,
name STRING
)
PARTITIONED BY (pt1 STRING, pt2 STRING)
STORED AS TEXTFILE
LOCATION "oss://oss-cn-beijing-internal.aliyuncs.com/mfoss*/demo8/"
TBLPROPERTIES (
'odps.properties.rolearn' = 'acs:ram::1563281086590914:role/aliyunodpsdefaultrole'
);
确保TBLPROPERTIES
中的键值对用于配置表级别的属性,其中包括与OSS访问权限相关的角色ARN(Amazon Resource Name,这里是阿里云资源名)。同时,请检查提供的角色ARN是否正确且有效,并且拥有足够的权限访问OSS bucket。
根据您提供的信息,报错信息显示是由于语法错误导致的解析异常。根据DataWorks在MaxCompute中创建外部表的语法规则,您需要确保SQL语句的正确性。
在您提供的SQL语句中,似乎问题出现在WITH SERDEPROPERTIES
这一部分。请尝试将WITH SERDEPROPERTIES
部分移动到CREATE EXTERNAL TABLE
语句之后,并且使用分号;
来结束CREATE EXTERNAL TABLE
语句。以下是修正后的示例代码:
CREATE EXTERNAL TABLE mf_oss_spe_pt (
id int,
name string
)
PARTITIONED BY (pt1 string, pt2 string)
STORED AS TEXTFILE
LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/mfoss*/demo8/'
WITH SERDEPROPERTIES (
'odps.properties.rolearn'='acs:ram::1563281086590914:role/aliyunodpsdefaultrole'
);
请注意,对于外部表的创建,WITH SERDEPROPERTIES
应该在CREATE EXTERNAL TABLE
语句之后,并且每个参数之间需要用逗号隔开。另外,LOCATION
参数应该使用单引号 '
而不是双引号 "
。
您可以尝试使用上述修正后的SQL语句来重新创建外部表,看是否能够顺利执行。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。