关于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 
目录
相关文章
|
11月前
|
Dubbo Java 应用服务中间件
项目中引进这玩意,排查日志又快又准
随着微服务盛行,很多公司都把系统按照业务边界拆成了很多微服务,在排错查日志的时候,因为业务链路贯穿着很多微服务节点,导致定位某个请求的日志以及上下游业务的日志会变得有些困难。
|
2月前
|
SQL 分布式计算 数据处理
FlinkSQL开发经验分享
FlinkSQL开发经验分享
|
4月前
|
SQL 运维 关系型数据库
阿里云DTS踩坑经验分享系列|数据不一致修复大法
阿里云数据传输服务DTS在帮助用户迁移数据、同步数据时,在某些复杂场景下会出现源库与目标库数据不一致的问题,造成数据错误,给用户带来困扰。由于数据不一致的问题很难完全避免,为了及时修复不一致的数据,DTS产品推出数据订正功能,保障用户在同步\迁移数据时的数据一致性。本文介绍了产生数据不一致的一些典型场景,并重点阐述了如何使用DTS数据订正功能来修复不一致的数据。
480 4
|
4月前
|
网络协议 容灾 NoSQL
阿里云DTS踩坑经验分享系列|网络问题排查大法
在DTS的所有用户问题中,网络问题出现的概率居高不下,很大程度上是由于DTS的链路复杂性,从源数据库到DTS再从DTS到目的数据库,任意的一个部位发生网络不通、网络质量问题都有可能导致DTS任务的中断,或者延迟。本文希望以一种最简单的模型,简述DTS网络不通问题的排查方法,并给出一些简单的验证思路及手段,排查方向对了才能事半功倍。
109067 3
阿里云DTS踩坑经验分享系列|网络问题排查大法
|
4月前
|
数据采集 关系型数据库 MySQL
Kettle教程[2] 程序员小姐姐的第二次邂逅——JOB(作业)开发
Kettle教程[2] 程序员小姐姐的第二次邂逅——JOB(作业)开发
61 0
|
存储 JSON 算法
新手避坑:盘点使用ClickHouse最容易犯的12个错误
在这篇文章中,我们突出了新手用户遇到的最常见的12个问题,这些问题是由于在使用ClickHouse的过程中,不遵循最佳实践,甚至反最佳实践而导致的。对于每一个问题,我们都推荐了一个解决方案或正确的使用方法。
5258 18
新手避坑:盘点使用ClickHouse最容易犯的12个错误
|
存储 人工智能
【一】曾经那些错误,你又踩坑了吗?(一)
【一】曾经那些错误,你又踩坑了吗?
57 0
|
存储 编译器 C++
【一】曾经那些错误,你又踩坑了吗?(二)
【一】曾经那些错误,你又踩坑了吗?
74 0
|
Java 应用服务中间件 Android开发
开发踩坑记录之四:Tomcat内存溢出问题分析
系统平台运行一段时间后,平台出现无法访问的问题,重启对应的服务后平台恢复正常。查看日志发现在凌晨两点零四分之后没有对应的日志输出,直到重启服务后才有日志的正常输出。同时发现在Tomcat的目录下存在hprof文件,即java进程的内存镜像文件。初步猜测Tomcat发生了内存溢出导致服务出现假死现象,即在任务管理器中虽然为运行状态,但是实际已不能正常对外提供服务。   对于hprof文件的分析需要借助于内存分析工具Eclipse Memory Analyzer,通过它寻找到平台发生内存泄露的根源,再根据发生内存泄露的地方以及相关的日志信息定位什么样的业务场景下导致该异常情况的发生。
开发踩坑记录之四:Tomcat内存溢出问题分析
|
前端开发 JavaScript ice
flexiwan项目踩坑实践
flexiManage是以色列一家初创公司flexiWAN开源的基于SD-WAN平台的应用层的框架,包括flexiManage服务端框架以及硬件侧的flexiAgent框架,然而其并没有开源前端框架,为了验证其SD-WAN方案的可行性,需要快速搭建一个前端应用
244 0