JMeter连接odps数据库


前言

我们有时会碰到需要使用jmeter连接数据库的场景,最常见的就是链接mysql数据库,基本的原理和使用方法相信大家都知道。碰到了需要链接ODPS数据库的时候,采取了同样的方法但是一直不生效,报错,最终经过反复尝试解决了。


一、ODPS是什么?

ODPS是一种由阿里云自主研发,针对TB/PB级数据、实时性要求不高的分布式处理服务。主要服务于批量结构化数据的存储和计算,可以提供海量数据仓库的解决方案以及针对大数据的分析建模服务。现在更名叫:MaxCompute。
它和我们通常使用的MySQL、Oracle等sql语法上又一些的差别,具体的解释我们可以参考阿里云的官方文档:与其他SQL语法的差异
官方文档中还有介绍如何 使用数据库管理连接MaxCompute的详细介绍,我当时使用的是:DBeaver连接MaxCompute。 这里就不在班门弄斧了。

二、场景描述

我们需要测试一个数据大屏看板的需求,里面的一些数据指标的计算涉及了两个不同的数据库关联。一个是ODPS数据源,一个是Mysql数据源。需求关联逻辑是:先用odp进行各种查询去重后的结果集(ids),这个结果集是mysql数据库中的查询条件,或者反过来,先在mysql中查询得到一个结果集,然后在odps中使用这个结果集过滤查询等数据操作

三、实现思路

由于是两个不同的数据源,所以在想可以通过什么方法进行关联:

方法一:最笨的方法,两个数据源的数据都导出成excel文档,然后通过Excel的VLOOKUP函数进行匹配,关联在一起后,在手动去重进行后续操作。但是这种方法操作有一点麻烦和不准确(毕竟是手动的嘛,这种方法没有去尝试,感觉有点麻烦,直接放弃了哈哈哈哈哈)

方法二:就是使用jmeter,连接数据库就是刚开始调试的花费点时间,等后面就会很轻松。

  • 使用jmeter连接odps,编写sql语句后查询,并使用BeanShell 后置处理程序将数据保存在本地文件中
  • jmeter连接odps后,再使用参数化的方法,使用上一步保存的文件作为CSV 数据文件设置中的数据源,并正常编写各种聚合sql语句执行就可以

四、jmeter连接odps库步骤

1.下载依赖JAR包jar-with-dependencies

在这里插入图片描述
下载地址:点击想要下载的版本号,进入下载页面,Assets中下载jar包

2.jmeter中配置odps信息:

1.同样导入jar包的方法有两种:一是将jar包添加进apache-jmeter-5.5\lib目录下
二是在jmeter中的测试计划 浏览jar添加进clsspath

在这里插入图片描述2.jmeter中配置JDBC Connection Configuration信息

  • database url格式为:jdbc:odps:MaxCompute_endpoint?project=project_name

  • username: 即 accessId

  • password: 即 access_key

例如:开发提供给我的地址是这个(数据是虚拟的,只是为了方便理解),字段对应如下
在这里插入图片描述

  • JDBC Driver class

: 同样有两种方法
方法一: 选择编辑,填写:com.aliyun.odps.jdbc.OdpsDriver
在这里插入图片描述
方法二:在jmeter的bin目录下,找到jmeter.properties,搜索jdbc.config.jdbc.driver.class,添加配置

在这里插入图片描述
配置好如下图所示:
在这里插入图片描述注意一:
连接odps执行sql语句时 注意要设置JDBC Request中的Query timeout参数,否则容易报错(我就因为这个没有设置,困扰了好久,百度,爬墙搜索了好多都没有解决,后来根据报错提示,尝试设置了这个值之后,执行终于成功了!!!)

注意二:
mysql使用odps保存到本地的结果集的格式需要转化一下哦,否则查询的场景与实际不符合的

odps保存本地的结果集格式是这样的:
在这里插入图片描述
我们sql语句中的查询条件时要 select *from 表名 where source_id in(“BBB”,“AAA”)这种格式的,所以需要把文件的格式调整成下面这种(我使用的是notepad++打开文件,然后ctrl+h替换,如图)
在这里插入图片描述这样我们请求的sql就是我们想要的效果
在这里插入图片描述

总结

以上就是jmeter连接odps的一些使用方法,中间遇到的一些报错之类的,因为没有截图当时的报错图,不好整理,后续有时间了再添加上去,基本原理都是这样的,大家仔细检查下自己的配置,jar版本以及报错提示,基本都可以解决。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值