全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
日志服务

对接JDBC

更新时间:2018-04-11 14:31:30

MySQL是当前流行的关系型数据库,很多软件支持通过MySQL传输协议和SQL语法获取MySQL数据。用户只需要对SQL语法熟悉,即可完成对接。日志服务提供了MySQL协议查询和分析日志数据。用户可以使用标准MySQL客户端连接到日志服务,使用标准的SQL语法计算和分析日志。支持MySQL传输协议的客户端包括MySQL client,JDBC和Python MySQLdb。

本文以共享单车日志为例,演示如何使用JDBC连接日志服务、读取日志数据,使用MySQL协议和SQL语法来计算日志,并使用DataV完成日志数据或计算结果的大屏可视化。

JDBC的使用场景:

  • 使用可视化类工具,例如DataV、Tableau或Kibana来通过MySQL协议连接日志服务。
  • 使用Java的JDBC、Python的MySQLdb等库在程序中访问日志服务,在程序中处理查询结果。

数据样例

共享单车日志内容包括用户年龄、性别、电量使用量、车辆ID、操作延时、纬度、锁类型、经度、操作类型、操作结果和开锁方式。数据保存在project:trip_demoLogstore:ebike中。Project所在地域是cn-hangzhou。

日志样例如下:

  1. Time :10-12 14:26:44
  2. __source__: 11.164.232.105
  3. __topic__: v1
  4. age: 55
  5. battery: 118497.673842
  6. bikeid: 36
  7. gender: male
  8. latency: 17
  9. latitude: 30.2931185245
  10. lock_type: smart_lock
  11. longitude: 120.052840484
  12. op: unlock
  13. op_result: ok
  14. open_lock: bluetooth
  15. userid: 292

前提条件

如需使用日志索引和分析功能,请先通过控制台或API为Logstore的每一列开启索引和分析功能。

JDBC统计

  1. 创建一个maven项目,在pom依赖中添加JDBC依赖。

    1. <dependency>
    2. <groupId>MySQL</groupId>
    3. <artifactId>mysql-connector-java</artifactId>
    4. <version>5.1.6</version>
    5. </dependency>
  2. 新建一个java类,在代码中使用JDBC进行查询。

    1. /**
    2. * Created by mayunlei on 2017/6/19.
    3. */
    4. import com.mysql.jdbc.*;
    5. import java.sql.*;
    6. import java.sql.Connection;
    7. import java.sql.Statement;
    8. /**
    9. * Created by mayunlei on 2017/6/15.
    10. */
    11. public class jdbc {
    12. public static void main(String args[]){
    13. //在这里修改成你的配置
    14. final String endpoint = "cn-hangzhou-intranet.sls.aliyuncs.com";//日志服务内网或VPC域名
    15. final String port = "10005"; //日志服务MySQL 协议端口
    16. final String project = "trip-demo";
    17. final String logstore = "ebike";
    18. final String accessKeyId = "";
    19. final String accessKey = "";
    20. Connection conn = null;
    21. Statement stmt = null;
    22. try {
    23. //步骤1 : 加载JDBC驱动
    24. Class.forName("com.mysql.jdbc.Driver");
    25. //步骤2 : 创建一个链接
    26. conn = DriverManager.getConnection("jdbc:mysql://"+endpoint+":"+port+"/"+project,accessKeyId,accessKey);
    27. //步骤3 : 创建statement
    28. stmt = conn.createStatement();
    29. //步骤4 : 定义查询语句,查询2017年10月11日全天日志中满足条件op = "unlock"的日志条数,操作平均延时
    30. String sql = "select count(1) as pv,avg(latency) as avg_latency from "+logstore+" " +
    31. "where __date__ >= '2017-10-11 00:00:00' " +
    32. " and __date__ < '2017-10-12 00:00:00'" +
    33. " and op ='unlock'";
    34. //步骤5 : 执行查询条件
    35. ResultSet rs = stmt.executeQuery(sql);
    36. //步骤5 : 提取查询结果
    37. while(rs.next()){
    38. //Retrieve by column name
    39. System.out.print("pv:");
    40. //获取结果中的pv
    41. System.out.print(rs.getLong("pv"));
    42. System.out.print(" ; avg_latency:");
    43. //获取结果中的avg_latency
    44. System.out.println(rs.getDouble("avg_latency"));
    45. System.out.println();
    46. }
    47. rs.close();
    48. } catch (ClassNotFoundException e) {
    49. e.printStackTrace();
    50. } catch (SQLException e) {
    51. e.printStackTrace();
    52. } catch (Exception e) {
    53. e.printStackTrace();
    54. } finally {
    55. if (stmt != null) {
    56. try {
    57. stmt.close();
    58. } catch (SQLException e) {
    59. e.printStackTrace();
    60. }
    61. }
    62. if (conn != null) {
    63. try {
    64. conn.close();
    65. } catch (SQLException e) {
    66. e.printStackTrace();
    67. }
    68. }
    69. }
    70. }
    71. }

使用DavaV连接展示数据

可视化大屏DataV提供数据的展示功能,可以对接日志服务读取日志数据或展示日志计算结果。

  1. 创建数据源

    数据源可以选择MySQL for RDS或者日志服务,根据自己的需求选择对应的方式。本文以MySQL协议为例,展示如何接入。

    如图所示,选择对应的地域,网络选择内网,用户名和密码填写AccessKey,可以是主账号的AccessKey,也可以是有权限读取日志服务的子帐号AccessKey。端口输入10005,数据库输入Project名称。

    创建数据源

  2. 创建视图

    视图中选择好业务的模板,然后单击大屏中的任何一个视图,右侧单击修改数据,修改视图的数据源。

    创建视图

    如图,数据源选择上文创建的数据库,输入查询的SQL,在上边的字段映射中,输入查询结果和视图字段的映射关系。

    创建视图-2

  3. 预览视图并发布

    预览视图

    单击预览,可以查看预览效果。

    预览视图-2

本文导读目录