关于ODPS错误NoSuchObjectException的踩坑经历

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 背景:正在做一个odps查询相关的工具,使用sofaboot引入odps的sdk,一切都很顺利,之前技术验证的代码都是跑通的;然后,引入配置文件获取配置信息,再启动。。。就出现了下列的错误:Exception in thread "main" com.aliyun.odps.ReloadException: No such object.    at com.aliyun.od

背景:

正在做一个odps查询相关的工具,使用sofaboot引入odps的sdk,一切都很顺利,之前技术验证的代码都是跑通的;

然后,引入配置文件获取配置信息,再启动。。。

就出现了下列的错误:

Exception in thread "main" com.aliyun.odps.ReloadException: No such object.

    at com.aliyun.odps.LazyLoad.lazyLoad(LazyLoad.java:65)

    at com.aliyun.odps.Table.isVirtualView(Table.java:476)

    at com.aliyun.odps.Table.isPartitioned(Table.java:1314)

    at com.wjh.test002.main(test002.java:31)

Caused by: [404] com.aliyun.odps.NoSuchObjectException: No such object.

    at com.aliyun.odps.rest.RestClient.handleErrorResponse(RestClient.java:391)

    at com.aliyun.odps.rest.RestClient.request(RestClient.java:330)

    at com.aliyun.odps.rest.RestClient.request(RestClient.java:284)

    at com.aliyun.odps.rest.RestClient.request(RestClient.java:238)

    at com.aliyun.odps.rest.RestClient.request(RestClient.java:179)

    at com.aliyun.odps.Table.reload(Table.java:257)

    at com.aliyun.odps.LazyLoad.lazyLoad(LazyLoad.java:63)

    ... 3 more

Process finished with exit code 1

排查过程:

debug 内容:

Connected to the target VM, address: '127.0.0.1:52094', transport: 'socket'

Exception in thread "main" com.aliyun.odps.ReloadException: No such object.

    at com.aliyun.odps.LazyLoad.lazyLoad(LazyLoad.java:65)

    at com.aliyun.odps.Table.isVirtualView(Table.java:476)

    at com.aliyun.odps.Table.isPartitioned(Table.java:1314)

    at com.wjh.test002.main(test002.java:31)

Caused by: [404] com.aliyun.odps.NoSuchObjectException: No such object.

    at com.aliyun.odps.rest.RestClient.handleErrorResponse(RestClient.java:391)

    at com.aliyun.odps.rest.RestClient.request(RestClient.java:330)

    at com.aliyun.odps.rest.RestClient.request(RestClient.java:284)

    at com.aliyun.odps.rest.RestClient.request(RestClient.java:238)

    at com.aliyun.odps.rest.RestClient.request(RestClient.java:179)

    at com.aliyun.odps.Table.reload(Table.java:257)

    at com.aliyun.odps.LazyLoad.lazyLoad(LazyLoad.java:63)

    ... 3 more

Disconnected from the target VM, address: '127.0.0.1:52094', transport: 'socket'

无有效信息

重新写个最简单的测试代码:

Account account = new AliyunAccount(accessId2, accessKey2);
Odps odps = new Odps(account);
odps.setEndpoint(endPoint2);
odps.setDefaultProject(project2);
Boolean rt = false;
try {
    odps.tables().get("tmp_wjh_test001").isPartitioned();

} catch (OdpsException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

还是一样的错误

关键词搜索:odps.ReloadException: No such object 、ReloadException、odps.LazyLoad、odps.NoSuchObjectException: No such object、odps.NoSuchObjectException、RestClient.handleErrorResponse

还是找不到有效的参考信息,odps的这种错误记录内网基本没有找到

之前的关注点 一直在 reload Exception 那里,找不到方向,盲目测试耽误了很多时间;

第二天早上再次分析报错信息,RestClient.handleErrorResponse  再次让我开始怀疑网络问题,因为之前是可以跑通的,所以引发网络问题的只有一个地方,odps 的 endpoint 地址,会不会是地址配置错误了。。。 

虽然不想接受,但还是换成集团内的一个常用地址再测试,通了,一句歌词飘过:千言万语 只能无语。。。

解决方法:

阿里云的odps endpoint地址有多个,特别是集团统一使用的 地址有一些是被限制的,所以并不会爆出明确的地址错误信息;

换成 公网endpoint或者vpc网络endpoint就可以了 

反思:

相信已验证的代码的合理性,不要长时间怀疑自己写的有问题;

不要被一些不相关的报错信息干扰,用最小case验证,对比测试找出问题点;

这次把错误信息贴出来,希望再有同学遇到的时候可以搜索看到这里

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
6月前
|
SQL 分布式计算 监控
Sqoop数据迁移工具使用与优化技巧:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入解析Sqoop的使用、优化及面试策略。内容涵盖Sqoop基础,包括安装配置、命令行操作、与Hadoop生态集成和连接器配置。讨论数据迁移优化技巧,如数据切分、压缩编码、转换过滤及性能监控。此外,还涉及面试中对Sqoop与其他ETL工具的对比、实际项目挑战及未来发展趋势的讨论。通过代码示例展示了从MySQL到HDFS的数据迁移。本文旨在帮助读者在面试中展现Sqoop技术实力。
470 2
|
Dubbo Java 应用服务中间件
项目中引进这玩意,排查日志又快又准
随着微服务盛行,很多公司都把系统按照业务边界拆成了很多微服务,在排错查日志的时候,因为业务链路贯穿着很多微服务节点,导致定位某个请求的日志以及上下游业务的日志会变得有些困难。
|
4月前
|
SQL 分布式计算 数据处理
FlinkSQL开发经验分享
FlinkSQL开发经验分享
116 8
|
2月前
|
资源调度 流计算 Docker
死磕flink(七)
死磕flink(七)
|
2月前
|
Linux 流计算
死磕flink(四)
死磕flink(四)
|
2月前
|
流计算 Docker 容器
死磕flink(八)
死磕flink(八)
|
2月前
|
消息中间件 存储 API
死磕flink(六)
死磕flink(六)
|
2月前
|
SQL 算法 API
死磕flink(三)
死磕flink(三)
|
2月前
|
存储 分布式计算 大数据
死磕Flink(二)
死磕Flink(二)
|
2月前
|
SQL 资源调度 Kubernetes
死磕flink(五)
死磕flink(五)