关于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 
目录
相关文章
|
5月前
|
SQL 分布式计算 数据处理
FlinkSQL开发经验分享
FlinkSQL开发经验分享
140 8
|
7月前
|
SQL 运维 关系型数据库
阿里云DTS踩坑经验分享系列|数据不一致修复大法
阿里云数据传输服务DTS在帮助用户迁移数据、同步数据时,在某些复杂场景下会出现源库与目标库数据不一致的问题,造成数据错误,给用户带来困扰。由于数据不一致的问题很难完全避免,为了及时修复不一致的数据,DTS产品推出数据订正功能,保障用户在同步\迁移数据时的数据一致性。本文介绍了产生数据不一致的一些典型场景,并重点阐述了如何使用DTS数据订正功能来修复不一致的数据。
610 4
|
存储 JSON 算法
新手避坑:盘点使用ClickHouse最容易犯的12个错误
在这篇文章中,我们突出了新手用户遇到的最常见的12个问题,这些问题是由于在使用ClickHouse的过程中,不遵循最佳实践,甚至反最佳实践而导致的。对于每一个问题,我们都推荐了一个解决方案或正确的使用方法。
7020 18
新手避坑:盘点使用ClickHouse最容易犯的12个错误
|
7月前
|
网络协议 算法 Java
史上最全大厂面试题复盘总结,全会进大厂拿35K没问题(Java岗)
为了方便大家之后的面试复习,我把各类面试题给汇总了一下,每道题都是经过自己筛选后觉得需要掌握的,此次整理包括 Java基础、数据结构与算法、计算机网络、操作系统、数据库、多线程等。后面我会把这些问题的解答陆续放出来。
|
7月前
|
数据采集 关系型数据库 MySQL
Kettle教程[2] 程序员小姐姐的第二次邂逅——JOB(作业)开发
Kettle教程[2] 程序员小姐姐的第二次邂逅——JOB(作业)开发
75 0
|
存储 人工智能
【一】曾经那些错误,你又踩坑了吗?(一)
【一】曾经那些错误,你又踩坑了吗?
70 0
|
存储 编译器 C++
【一】曾经那些错误,你又踩坑了吗?(二)
【一】曾经那些错误,你又踩坑了吗?
89 0
Java程序员最容易犯的十大SQL错误,你犯过几次?
前言 Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美地将两者结合起来完全得依靠编程人员的水准: 技能:任何人都能容易学会命令式编程 模式:有些人用“模式-模式”,举个例子,模式可以应用到任何地方,而且都可以归为某一类模式 心境:首先,要写个好的面向对象程序是比命令式程序难得多,你得花费一些功夫 但当Java程序员写SQL语句时,一切都不一样了。SQL是说明性语言而非面向对象或是命令式编程语言。在SQL中要写个查询语句是很简单的。但在Java里类似的语句却不容易,因为程序员不仅要反复考虑编程范式,而且也要考虑算法的问题。 下面是Java程序员在写SQL时常犯的10个错误
|
SQL 存储 缓存
头条二面:详述一条 SQL 的执行过程
头条二面:详述一条 SQL 的执行过程