关于ODPS错误NoSuchObjectException的踩坑经历

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*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 
目录
相关文章
|
7月前
|
SQL 分布式计算 监控
Sqoop数据迁移工具使用与优化技巧:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入解析Sqoop的使用、优化及面试策略。内容涵盖Sqoop基础,包括安装配置、命令行操作、与Hadoop生态集成和连接器配置。讨论数据迁移优化技巧,如数据切分、压缩编码、转换过滤及性能监控。此外,还涉及面试中对Sqoop与其他ETL工具的对比、实际项目挑战及未来发展趋势的讨论。通过代码示例展示了从MySQL到HDFS的数据迁移。本文旨在帮助读者在面试中展现Sqoop技术实力。
525 2
|
5月前
|
SQL 分布式计算 数据处理
FlinkSQL开发经验分享
FlinkSQL开发经验分享
130 8
|
7月前
|
SQL 运维 关系型数据库
阿里云DTS踩坑经验分享系列|数据不一致修复大法
阿里云数据传输服务DTS在帮助用户迁移数据、同步数据时,在某些复杂场景下会出现源库与目标库数据不一致的问题,造成数据错误,给用户带来困扰。由于数据不一致的问题很难完全避免,为了及时修复不一致的数据,DTS产品推出数据订正功能,保障用户在同步\迁移数据时的数据一致性。本文介绍了产生数据不一致的一些典型场景,并重点阐述了如何使用DTS数据订正功能来修复不一致的数据。
586 4
|
7月前
|
数据采集 关系型数据库 MySQL
Kettle教程[2] 程序员小姐姐的第二次邂逅——JOB(作业)开发
Kettle教程[2] 程序员小姐姐的第二次邂逅——JOB(作业)开发
71 0
|
存储 人工智能
【一】曾经那些错误,你又踩坑了吗?(一)
【一】曾经那些错误,你又踩坑了吗?
69 0
|
存储 编译器 C++
【一】曾经那些错误,你又踩坑了吗?(二)
【一】曾经那些错误,你又踩坑了吗?
86 0
|
JavaScript 前端开发 API
每个 Bug 都值得认真对待:分享一个 debug 的案例,推荐给前端实习生参考
每个 Bug 都值得认真对待:分享一个 debug 的案例,推荐给前端实习生参考
308 0
|
前端开发 JavaScript ice
flexiwan项目踩坑实践
flexiManage是以色列一家初创公司flexiWAN开源的基于SD-WAN平台的应用层的框架,包括flexiManage服务端框架以及硬件侧的flexiAgent框架,然而其并没有开源前端框架,为了验证其SD-WAN方案的可行性,需要快速搭建一个前端应用
282 0
|
机器学习/深度学习 消息中间件 SQL
原创 | 以Spark性能调优为例,说说如何书写简历项目的技术难点
原创 | 以Spark性能调优为例,说说如何书写简历项目的技术难点
原创 | 以Spark性能调优为例,说说如何书写简历项目的技术难点
|
测试技术
软件测试面试题:软件上线后有bug怎么处理?
软件测试面试题:软件上线后有bug怎么处理?
199 0