本文共 3782 字,大约阅读时间需要 12 分钟。
mysql作为非常流行的关系型数据库,很多软件支持通过mysql传输协议和sql语法获取mysql数据。用户只需要对sql语法熟悉,即可完成对接。日志服务提供了查询和分析日志数据。用户可以使用标准mysql客户端连接到日志服务,使用标准的sql语法计算和分析日志。支持mysql传输协议的客户端包括,mysql client,jdbc, Python MySQLdb。例如,我们使用tableau,通过mysql协议连接日志服务,读取日志数据。有两种场景使用jdbc:
本文将介绍如何使用mysql协议和sql语法来计算日志。
以共享单车日志为例,日志内容包括用户年龄,电量使用量,车辆id,性别,操作延时,纬度,锁类型,经度,操作类型,操作结果,开锁方式。数据保存在project:trip_demo的logstore:ebike中。在控制台给logstore的每一列开启索引和分析功能 。project所在地域是cn-hangzhou
Time :10-12 14:26:44__source__: 11.164.232.105 __topic__: v1 age: 55 battery: 118497.673842 bikeid: 36 gender: male latency: 17 latitude: 30.2931185245 lock_type: smart_lock longitude: 120.052840484 op: unlock op_result: ok open_lock: bluetooth userid: 292
首先创建一个maven项目,在pom依赖中添加jdbc依赖。
mysql mysql-connector-java 5.1.6
新建一个java类,在代码中使用jdbc进行查询:
/** * Created by mayunlei on 2017/6/19. */import com.mysql.jdbc.*;import java.sql.*;import java.sql.Connection;import java.sql.Statement;/** * Created by mayunlei on 2017/6/15. */public class jdbc { public static void main(String args[]){ //在这里修改成你的配置 final String endpoint = "cn-hangzhou-intranet.sls.aliyuncs.com";//日志服务内网或VPC域名 final String port = "10005"; //日志服务mysql 协议端口 final String project = "trip-demo"; final String logstore = "ebike"; final String accessKeyId = ""; final String accessKey = ""; Connection conn = null; Statement stmt = null; try { //步骤1 : 加载jdbc驱动 Class.forName("com.mysql.jdbc.Driver"); //步骤2 : 创建一个链接 conn = DriverManager.getConnection("jdbc:mysql://"+endpoint+":"+port+"/"+project,accessKeyId,accessKey); //步骤3 : 创建statement stmt = conn.createStatement(); //步骤4 : 定义查询语句,查询2017年10月11日全天日志中满足条件op = "unlock"的日志条数,操作平均延时 String sql = "select count(1) as pv,avg(latency) as avg_latency from "+logstore+" " + "where __date__ >= '2017-10-11 00:00:00' " + " and __date__ < '2017-10-12 00:00:00'" + " and op ='unlock'"; //步骤5 : 执行查询条件 ResultSet rs = stmt.executeQuery(sql); //步骤5 : 提取查询结果 while(rs.next()){ //Retrieve by column name System.out.print("pv:"); //获取结果中的pv System.out.print(rs.getLong("pv")); System.out.print(" ; avg_latency:"); //获取结果中的avg_latency System.out.println(rs.getDouble("avg_latency")); System.out.println(); } rs.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }}
可视化大屏提供数据的展示功能,可以对接日志服务读取日志数据,或展示日志计算结果。
数据源可以选择mysql for RDS或者简单日志服务,根据自己的需求选择对应的方式,这里以mysql协议为例,展示如何接入。
如图所示,选择对应的地域,网络选择内网,用户名和密码填写accesskey ,可以是主账号的accessKey,也可以是有权限读取日志服务的子帐号accessKey。端口输入10005,数据库输入project名称。
视图中选择好业务的模板,然后点击大屏中的任何一个视图,右侧点击修改数据,修改视图的数据源。
如图,数据源选择上文创建的数据库,输入查询的SQL,在上边的字段映射中,输入查询结果和视图字段的映射关系。
点击预览,可以查看预览效果:
转载地址:http://msiyl.baihongyu.com/