本文为您介绍使用Tunnel过程中的常见错误码,帮助您了解错误码产生原因,并提供解决措施。
Tunnel常见错误码如下:
报错信息:ErrorCode=NoSuchPartition, ErrorMessage=The specified partition does not exist.
报错信息:ErrorCode=Unauthorized, ErrorMessage=The request authorization header is invalid or missing.
报错信息:ErrorCode=Local Error, Failed to create download session with tunnel endpoint.
报错信息:ErrorCode=NoSuchProject, ErrorMessage=The specified project name does not exist.
报错信息:ErrorCode=InvalidBlockID, ErrorMessage=The specified block id is not valid.xxxx.
报错信息:ErrorCode=StatusConflict, ErrorMessage=The download session is expired.
报错信息:ErrorCode=InvalidPartitionSpec, ErrorMessage=Error: The specified partitionspec is not valid.
报错信息:ErrorCode=InvalidRowRange, ErrorMessage=The specified row range is not valid.
报错信息:ErrorCode=StatusConflict, ErrorMessage=The upload|download session is expired.
报错信息:ErrorCode=FlowExceeded, ErrorMessage=Your flow quota is exceeded.
报错信息:ErrorMessage=java.net.SocketException: Connection reset.
报错信息:ErrorCode=InstanceNotTerminate, ErrorMessage=The instance does not terminate.
报错信息:ErrorCode=NoSuchPartition, ErrorMessage=The specified partition does not exist.
产生原因
目标分区不存在。
解决措施
执行
show partitions <table_name>;
命令确认分区名称正确性,或者为目标表创建新的分区。更多创建分区信息,请参见添加分区。
报错信息:ErrorCode=Unauthorized, ErrorMessage=The request authorization header is invalid or missing.
产生原因
AccessKey不正确,无法通过身份校验。
解决措施
您可以进入AccessKey管理页面获取正确的AccessKey。如果AccessKey配置无误,请加入钉钉群进行反馈,并提供使用该AccessKey成功上传或下载的日志信息。
报错信息:ErrorCode=Local Error, Failed to create download session with tunnel endpoint.
产生原因
原因一:网络未连通。
原因二:表或分区的小文件太多。
解决措施
原因一的解决措施:
在报错设备的命令行窗口,使用
curl
命令连接报错信息中的Tunnel Endpoint,验证是否可以正常访问。如果可以正常访问,会返回如下信息。此时请跳过该步骤,根据下方原因二的解决措施进行处理。
如果无法正常访问,请检查并修改Tunnel Endpoint配置。
公网的Tunnel Endpoint以aliyun.com结尾,云产品互联网络或VPC网络的Tunnel Endpoint以aliyun-inc.com结尾。请您根据实际业务情况配置正确的Tunnel Endpoint。更多Tunnel Endpoint信息,请参见Endpoint。
说明如果您通过外网设备访问云产品互联网络或VPC网络的Tunnel Endpoint,或者通过云产品互联网络或VPC网络设备访问公网的Tunnel Endpoint,有可能网络不通。
原因二的解决措施:
通过MaxCompute客户端或DataWorks客户端执行
desc extended
命令,查看表或分区的文件数量。desc extended <table_name> [partition(partition_spec)];
返回结果中的FileNum即为文件数量。当文件数量超过1000个时,需要合并小文件。
如果您的项目还使用了Instance Tunnel下载数据,同样受表文件数量影响。当文件数量过多时,就会存在超时问题。如果不需要下载SQL结果数据,可以关闭Instance Tunnel,SQL的执行过程并不受Limit参数影响,会把全表的数据都列出来。如果期望达到查询加速的效果,可以添加WHERE条件,例如查找没有NULL值的列,可以添加
where xxx not null
语句,生成一份临时数据,不需要全表扫描。
报错信息:ErrorCode=NoSuchProject, ErrorMessage=The specified project name does not exist.
产生原因
MaxCompute项目名称不正确或Tunnel Endopint不正确。
解决措施
检查并修改项目名称。
您可以登录MaxCompute控制台,左上角切换地域后,即可在项目管理页签查看到具体的MaxCompute项目名称。
检查并修改Tunnel Endpoint
各地域各网络对应的Tunnel Endopint信息,请参见Endpoint。
报错信息:ErrorCode=NoPermission, ErrorMessage=Authorization Failed [4019], You have NO privilege 'odps:Update' on.
产生原因
没有上传数据权限。
解决措施
您可以通过DataWorks的数据地图,申请目标表的Update权限,或者由项目所有者或表所有者授予表的Update权限。更多授权信息,请参见MaxCompute权限。
报错信息:ErrorCode=NoPermission, ErrorMessage=Authorization Failed [4019], You have NO privilege 'odps:Download' on.
产生原因
没有下载数据权限。
解决措施
您可以通过DataWorks的数据地图,申请目标表的Download权限,或者由项目所有者或具备Super_Administrator角色的用户授予表的Download权限。更多Download授权信息,请参见Policy权限控制。
报错信息:ErrorCode=NoPermission, ErrorMessage=Authorization Failed [4021], You have NO privilege 'odps:Select' on 'xxx',project 'xxx' is protected.
产生原因
MaxCompute项目设置了数据保护机制,禁止使用Tunnel下载数据。
解决措施
联系项目所有者(Project Owner)设置Exception Policy,为用户授权。更多Exception Policy信息,请参见数据流出策略一:设置Exception Policy。
报错信息:ErrorCode=InvalidBlockID, ErrorMessage=The specified block id is not valid.xxxx.
产生原因
多任务并发,BlockID非法。
解决措施
减小并发度,同时您可以执行如下命令清理5天前的日志。
tunnel purge 5;
报错信息:ErrorCode=TableModified, ErrorMessage=The specified table has been modified since the download initiated. Try initiate another download.
产生原因
下载数据过程中,表被修改了。
解决措施
报错信息:ErrorCode=StatusConflict, ErrorMessage=The download session is expired.
产生原因
下载超过24小时,导致Session过期。
解决措施
重新创建Download Session下载数据。需要注意的是:
Download Session如果没有主动关闭,超过24小时会自动失效。
创建Download Session后,如果表被修改了,Download Session也会失效。
报错信息:ErrorCode=StatusConflict, ErrorMessage=You cannot complete the specified operation under the current upload or download status.
产生原因
原因一:Upload Session已经提交。
原因二:表或分区内的小文件太多。
解决措施
原因一的解决措施:重新创建Upload Session上传数据。
原因二的解决措施:合并小文件,请参见合并小文件。
报错信息:ErrorCode=InvalidProjectTable, ErrorMessage=The specified project or table name is not valid or missing.
产生原因
项目名称或表名称不正确。
解决措施
检查项目名称或表名称的正确性并修改。
您可以登录MaxCompute控制台,左上角切换地域后,即可在项目管理页签查看到具体的MaxCompute项目名称。
您可以执行
show tables;
命令查看表的名称。
报错信息:ErrorCode=InvalidPartitionSpec, ErrorMessage=Error: The specified partitionspec is not valid.
产生原因
分区字段不正确或格式有误。
解决措施
您可以执行
show partitions <table_name>;
命令查看表的分区。检查分区字段信息,确保满足如下要求:参数中的分区列顺序要与建表语句中分区列顺序保持一致。
当分区列值中有引号(pt='a'或pt="a")时,旧版本SDK没有做过引号处理,需要使用新版本的Tunnel SDK。
多级分区中间有空格时,例如
pt1=a, pt2=a
,需要把空格删掉。多级分区需要填写所有的分区。
分区名大小写要与建表语句保持一致。
报错信息:ErrorCode=InvalidRowRange, ErrorMessage=The specified row range is not valid.
产生原因
openReader
的两个参数startOffset和count取值有问题。解决措施
检查代码确保满足如下要求:
startOffset必须大于等于0。
count必须大于0。
报错信息:ErrorCode=StatusConflict, ErrorMessage=Cannot close upload now: Close Upload Session Failed.Because of Status Conflict.Current Status:critical.
产生原因
DDL操作失败,导致Upload Session状态异常。
解决措施
重新创建Upload Session。
报错信息:ErrorCode=StatusConflict, ErrorMessage=The upload|download session is expired.
产生原因
Upload Session或Download Session超过24小时,已失效。
解决措施
重新创建Upload Session或Download Session。
报错信息:ErrorCode=FlowExceeded, ErrorMessage=Your flow quota is exceeded.
请填写钉钉群申请表单加入钉钉群进行反馈。
报错信息:ErrorMessage=java.net.SocketException: Connection reset.
产生原因
常见于使用SDK编写的程序或者第三方平台通过Tunnel读取数据进行处理的过程。服务端有连接保护,打开RecordReader后长时间不读数据,服务端会断开连接,时限为300秒。图示如下。
RecordReader内部有缓存,一旦用户的计算或处理逻辑较为缓慢,未能在超时时限内处理完一块缓存数据并触发下一次读取,则会出现该错误。
解决措施
优化代码处理逻辑。
报错信息:ErrorCode=Unauthorized ErrorMessage=The request authorization header is invalid or missing. Message:The signatrue is Time-Expired.
产生原因
签名的时间校验未通过。
解决措施
检查客户端系统时间,时间差不能超过15分钟。Tunnel服务端会定时NTP授时,一般是准确的。如果确定客户端系统时间没问题,请填写钉钉群申请表单加入钉钉群进行反馈。
如果使用Tunnel SDK开发时遇到这个错误,需要保证Open Writer与写入数据之间的时间间隔不能超过15分钟,签名在Open Writer时生成。
报错信息:ErrorCode=MalformedDataStream ErrorMessage=The data stream you provided was not well-formed or did not validate against schema.
产生原因
上传数据的结构和目标表的结构不一致。
解决措施
检查上传数据的结构与目标表的结构,确保二者一致。
报错信息:ErrorCode=MethodNotAllowed, ErrorMessage=The specified method is not allowed against clustered table and partition.
产生原因
Tunnel暂时不支持Clustered Table上传。
解决措施
无。
报错信息:ErrorCode=InstanceNotTerminate, ErrorMessage=The instance does not terminate.
产生原因
下载的Instance还未运行完。
解决措施
等待Instance运行完成后再下载。