ODPS-SDK调用排坑笔记(1)

简介: ODPS-SDK调用排坑笔记

一、坑从何来

ODPS表的数据使用,估计每个后端童靴都会碰到,常用就两种:

  1. 将ODPS表清洗后同步到mysql或histore中持久化,然后通过java封装服务能力调用。这种场景常用于在线实时调用;

2.直接调用ODPS-SDK,通过SQL.run(sql)直接获取odps数据,次方法常用离线JOB处理数据;

而我这次使用的及时后者,通过SQL直查的方式获取数据。下面就重点说下碰到一个坑。

二、采坑排查

1.代码写完,收工,源码如下:image
2.期待数据日志的打印,此时异常抛出:
image
3.初步定位返回数据结果有误导致XML解析错误,先看看ODPS源码那行是什么东东:
image
问题浮现:多个XML-parser被加载了,但是使用了错误的解析器,java8优先使用了自带的JAXB而不是com.sun.xml.internal.bind.v2.util.XmlFactory导致的冲突

三、排坑方案
1. 引入三方xml解析包
image
2.排调间接依赖:xml.xerces

<exclusion>
    <groupId> com.alibaba.external</groupId>
    <artifactId>xml.xerces</artifactId>
</exclusion>

四、小结

为什么就用到rt.jar中的xerces类呢,要去看Spring是如何load xml文件的,其实javadoc里面说得比较详细

1、Use the “javax.xml.parsers.DocumentBuilderFactory” system property.

2、Use the properties file "lib/jaxp.properties" in the JRE directory.

3、Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API will look for a classname in the file “META-INF/services/javax.xml.parsers.DocumentBuilderFactory"  in jars available to the runtime.

4、Platform default "DocumentBuilderFactory" instance,也就是类com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl。

如果前面三步都找不到实现类,jdk(好像必须是jdk1.5或以上版本)里自带的DocumentBuilderFactoryImpl将会被使用

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
开发工具 开发者
友盟推送集成方案攻略(Push SDK 6.2.0版本)
友盟推送集成方案攻略(Push SDK 6.2.0版本)
友盟推送集成方案攻略(Push SDK 6.2.0版本)
|
开发工具
杰里695N系列(soundbox)之 1.1 SDK快速入门(2)
杰里695N系列(soundbox)之 1.1 SDK快速入门(2)
360 0
杰里695N系列(soundbox)之 1.1 SDK快速入门(2)
|
开发工具
杰里695N系列(soundbox)之 1.0 SDK快速入门(1)
杰里695N系列(soundbox)之 1.0 SDK快速入门(1)
778 0
杰里695N系列(soundbox)之 1.0 SDK快速入门(1)
|
存储 自然语言处理 NoSQL
表格存储 Go SDK 开发入门
本文将结合电商订单场景为例,介绍表格存储 Tablestore Go SDK 的基本使用方法。
265 0
|
Java 开发工具 Maven
PolarDB-X 1.0-API参考-1.0(2017版本)-OpenAPI使用-SDK 说明
PolarDB-X OpenAPI SDK 依赖于阿里云的 aliyun-java-sdk-core。所以,使用 PolarDB-X OpenAPI 需要另外引入对 aliyun-java-sdk-core 的依赖。
180 0
|
JSON Java API
阿里云SDK核心库(Core SDK)使用教程
本文档主要介绍:JAVA、Python、PHP、JavaScript、NET、Go六款开发语言Core SDK的安装及使用。
6786 0
阿里云SDK核心库(Core SDK)使用教程
|
API 开发工具
阿里云API、SDK和CLI应用实践方案
⽬目前阿⾥里里云云产品提供了了丰富的API供⽤用户使⽤用,如果⽤用户熟悉HTTP协议以及⼀一种以上的编程资源,可以推荐 ⽤用户使⽤用阿⾥里里云提供的OpenAPI来管理理和使⽤用⽤用户的云产品资源,本⽂文档以视频云CDN的OpenAPI为例例,实践 API接⼝口的调试以及使⽤用⽅方式,特别适⽤用⽤用.
1803 0
|
存储 SQL 分布式计算
ODPS-SDK调用排坑笔记(2)
业务上需要通过对二级类目的聚合,输出每个类目下排名30天销量排名TOP100的商品信息。抽象到SQL层面就是:通过对X字段的分组,获取每个分组前N条数据。
1311 0
|
分布式计算 大数据 Java
MaxCompute_SDK_开发指南
方便和辅助 MaxCompute 开发人员使用 Java / Python SDK 方式进行日常代码的开发工作。
4238 0
|
分布式计算 大数据 Java
如何使用Tunnel SDK上传/下载MaxCompute复杂类型数据
基于Tunnel SDK如何上传复杂类型数据到MaxCompute?首先介绍一下MaxCompute复杂数据类型: 复杂数据类型 MaxCompute采用基于ODPS2.0的SQL引擎,丰富了对复杂数据类型类型的支持。
9291 0