博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
odps + druid的简单搭配使用
阅读量:3930 次
发布时间:2019-05-23

本文共 2970 字,大约阅读时间需要 9 分钟。

笔者最近因为一些需求给项目中添加了odps数据源,在尝试使用的期间碰到了一些问题,在此记录一下

目录


一、odps + druid的简单搭配使用

odps的官方文档推荐了两种使用方式,第一种是通过sdk的jar包,第二种是使用odps-jdbc的jar包(),笔者由于需要集成odps和druid,所以选用了第二种方式,下面是主要依赖:

org.apache.commons
commons-codec
1.8
com.aliyun.odps
odps-jdbc
3.0.1
jar-with-dependencies

再结合笔者之前写的文章《》,将odps数据源配置写入属性配置文件和数据源配置文件中,如下方伪代码:

属性配置文件:

@Data@ConfigurationProperties(prefix = "spring.datasource")public class DataSourceConfigProperties {
private DataSourceProperties muyichen; private DataSourceProperties test; private DataSourceProperties odps; @Data public static class DataSourceProperties {
private String driverClassName; private String url; private String username; private String password; }}

数据源配置文件:

/** * 多数据源配置 * * @Author muyichen * @Date 2021年6月16日 */@Configuration@EnableConfigurationProperties(DataSourceConfigProperties.class)@MapperScan(basePackages = {
"com.odps.dao"}, sqlSessionFactoryRef = "odpsSqlSessionFactory")public class DataSourceConfig {
@Bean(name = "odpsDataSource") public DruidDataSource getOdpsDataSource(DataSourceConfigProperties properties) {
DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(properties.getOdps().getDriverClassName()); dataSource.setUrl(properties.getOdps().getUrl()); dataSource.setUsername(properties.getOdps().getUsername()); dataSource.setPassword(properties.getOdps().getPassword()); return dataSource; } @Bean(name = "odpsSqlSessionFactory") public SqlSessionFactory odpsSqlSessionFactory(@Qualifier("odpsDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:odps/*.xml")); return bean.getObject(); } }

上图的com.odps.dao是持久层的扫包路径,odpsSqlSessionFactory方法中的classpath:odps/*.xml是持久层对应的xml文件扫包路径

application.properties配置文件中对应的odps属性配置:

#project的值对应的是odps项目名称spring.datasource.odps.url=jdbc:odps:http://service.cn-hangzhou.maxcompute.aliyun.com/api?project=test_projectspring.datasource.odps.driver-class-name=com.aliyun.odps.jdbc.OdpsDriver#username对应创建项目空间的AccessKey IDspring.datasource.odps.username=#password对应创建项目空间的AccessKey ID对应的AccessKey Secretspring.datasource.odps.password=

完成上面这些配置,并且加上对应的dao、xml之后,就可以实现简单的odps的使用了(当然你要有对应的项目和表的访问权限,不然仍旧无法使用)

二、使用过程中遇到的问题

1、3.0.1版本中的NoSuchMethod

笔者在使用3.0.1版本的时候出现了一个问题:org.apache.commons.codec.binary.Base64类中的

encodeBase64String方法不存在,它导致了druid无法获取数据源对象。笔者在仔细检查后发现是commons-codec这个jar包的版本过低为1.3版,之后笔者将该版本改成1.8后,就能使用了。

2、Access Denied - Authorization Failed [4019]

出现这个错误,说明你的云账号没有该odps的访问权限,需要找该odps项目的管理员帮你开通相应的的权限

3、execute sql [select count(*) from xxx;] failed: ODPS-0130013

出现这个错误,说明你的账号可以访问该odps,但是没有xxx这张表的查询权限,也需要找管理员帮你开通相应的权限

转载地址:http://zktgn.baihongyu.com/

你可能感兴趣的文章
机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation
查看>>
机器学习 | 台大林轩田机器学习基石课程笔记16 --- Three Learning Principles
查看>>
机器学习 | 台大林轩田机器学习技法课程笔记1 --- Linear Support Vector Machine
查看>>
机器学习 | 台大林轩田机器学习技法课程笔记2 --- Dual Support Vector Machine
查看>>
线性代数 | (3) 行列式
查看>>
学术英语 | (1) wordList1
查看>>
机器学习 | 台大林轩田机器学习技法课程笔记3 --- Kernel Support Vector Machine
查看>>
机器学习 | 台大林轩田机器学习技法课程笔记7 --- Blending and Bagging
查看>>
学术英语 | (6) WordList6
查看>>
线性代数 | (5) 线性方程组
查看>>
学术英文 | (7) Unit3Words
查看>>
线性代数 | (6) 相似对角形
查看>>
学术英语 | (8) WordList7
查看>>
概率论与数理统计 | (1) 概率论初步Part One
查看>>
概率论与数理统计 | (2) 概率论初步Part Two
查看>>
概率论与数理统计 | (3) 随机变量
查看>>
学术英语 | (9) WordList8
查看>>
概率论与数理统计 | (4) 二元随机变量Part One
查看>>
学术英语 | (10) WordList9
查看>>
李航机器学习 | (2) 统计学习方法(第2版)笔记 --- 感知机
查看>>