上云无忧 > 文档中心 > 百度智能云时序时空数据库TSDB - 对接hive-sql
时序时空数据库TSDB
百度智能云时序时空数据库TSDB - 对接hive-sql

文档简介:
Tsdb storage handler: TSDB对接hive是通过实现一个TSDB的HiveStorageHandler,支持对tsdb数据的读取。 Jar下载地址:https://sdk.bce.baidu.com/console-sdk/hive-tsdb-handler_all.jar 如果是本地hive集群,请下载jar到本地;如果使用bmr,则上传到bos或者直接使用地址bos://iot-tsdb/hive-tsdb-handler_all.jar 支持的hive 1.2.0,jdk 1.7。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

Tsdb storage handler

TSDB对接hive是通过实现一个TSDB的HiveStorageHandler,支持对tsdb数据的读取。

Jar下载地址:https://sdk.bce.baidu.com/console-sdk/hive-tsdb-handler_all.jar

如果是本地hive集群,请下载jar到本地;如果使用bmr,则上传到bos或者直接使用地址bos://iot-tsdb/hive-tsdb-handler_all.jar

支持的hive 1.2.0,jdk 1.7。

在Hive CLI或Hue中使用

示例及参数说明如下:

add jar /path/to/hive-tsdb-handler_all.jar;    /* 添加jar,如果在bmr中,请使用bos地址,如bos://path/to/hive-tsdb-handler_all.jar */ 
CREATE EXTERNAL TABLE `wind`(`time` bigint, `value` double, `city` string)     /* 创建表 */
STORED BY 'com.baidubce.tsdb.hive.storage.TsdbStorageHandler'                  /* 设置storage为TsdbStorageHandler */
TBLPROPERTIES (
"tsdb.metric_name" = "wind",                                                   /* Metric名字,默认表名则被当为metric */
"tsdb.timestamp_name" = "time",                                                /* Timestamp对应的列名,默认time为对应的列名 */
"tsdb.field_names" = "value",                                                  /* field列表,只需填写table中用到的,多个field通过逗号分割 */
"tsdb.tag_keys" = "city",                                                      /* tagKey列表,只需填写table中用到的,
这个示例中可以去掉改行,但如果tagKey中包含大写字母,则必须填写 */
"tsdb.endpoint" = "ENDPOINT",                                                  /* TSDB实例的endpoint */
"tsdb.access_key" = "AK",                                                      /* AK */
"tsdb.secret_key" = "SK"                                                       /* SK */
);
 
select time, value from wind where time>=1451500000000 and time<=1451577600000;

在endpoint为IP:PORT的情形下:

add jar /path/to/hive-tsdb-handler_all.jar;    /* 添加jar,如果在bmr中,请使用bos地址,如bos://path/to/hive-tsdb-handler_all.jar */ 
CREATE EXTERNAL TABLE `wind`(`time` bigint, `value` double, `city` string)
STORED BY 'com.baidubce.tsdb.hive.storage.TsdbStorageHandler'
TBLPROPERTIES (
"tsdb.metric_name" = "wind",
"tsdb.timestamp_name" = "time",
"tsdb.field_names" = "value",
"tsdb.tag_keys" = "city",
"tsdb.endpoint" = "http://IP:PORT",
"tsdb.host" = "DATABASE_NAME.tsdb.iot.gz.baidubce.com",
"tsdb.grpc_port" = "GRPC_PORT",
"tsdb.access_key" = "AK",
"tsdb.secret_key" = "SK"
);
select time, value from wind where time>=1451500000000 and time<=1451577600000;

场景示例

计算风速

风速数据由传感器定时上传到tsdb中,数据包含两个field分别为x和y,表示x轴和y轴方向的风速,如下由两个垂直方向的风速来计算出总的风速。

add jar /path/to/hive-tsdb-handler_all.jar;    /* 添加jar,如果在bmr中,请使用bos地址,如bos://path/to/hive-tsdb-handler_all.jar */ 
CREATE EXTERNAL TABLE `WindSpeed`(`time` bigint, `x` double, `y` double)       /* 创建表 */
STORED BY 'com.baidubce.tsdb.hive.storage.TsdbStorageHandler'                  /* 设置storage为TsdbStorageHandler */
TBLPROPERTIES (
"tsdb.metric_name" = "WindSpeed",                                              /* Metric名字,默认表名则被当为metric */
"tsdb.timestamp_name" = "time",                                                /* Timestamp对应的列名,默认time为对应的列名 */
"tsdb.field_names" = "x,y",                                                    /* field列表,多个field通过逗号分割 */
"tsdb.endpoint" = "ENDPOINT",                                                  /* TSDB实例的endpoint */
"tsdb.access_key" = "AK",                                                      /* AK */
"tsdb.secret_key" = "SK"                                                       /* SK */
);
 
select time, sqrt(pow(x, 2) + pow(y, 2)) as speed from WindSpeed;

原始数据

metric:WindSpeed

time field : x field : y
1512086400000 3.0 4.0
1512086410000 1.0 2.0
1512086420000 2.0 3.0

结果

time speed
1512086400000 5.000
1512086410000 2.236
1512086420000 3.606

计算车辆在时间上的使用情况

车辆在行驶过程中会定时(每10秒)将数据上传到tsdb中,数据中包含车速speed。需要统计三种时长:

(1)停止时长:一段时间内这台车子有上报数据,但是上报的车速显示是0,可能是车子在等红灯。

(2)运行时长:一段时间内这台车子有上报数据,且上报的车速显示大于0,这台车子正在行驶中。

(3)离线时长:一段时间内这台车子没有上报数据的时长,这台车子已经停下并熄火了。

add jar /path/to/hive-tsdb-handler_all.jar;    /* 添加jar,如果在bmr中,请使用bos地址,如bos://path/to/hive-tsdb-handler_all.jar */ 
CREATE EXTERNAL TABLE `vehicle`(`time` bigint, `speed` bigint, `carId` string) /* 创建表 */
STORED BY 'com.baidubce.tsdb.hive.storage.TsdbStorageHandler'                  /* 设置storage为TsdbStorageHandler */
TBLPROPERTIES (
"tsdb.metric_name" = "vehicle",                                                /* Metric名字,默认表名则被当为metric */
"tsdb.timestamp_name" = "time",                                                /* Timestamp对应的列名,默认time为对应的列名 */
"tsdb.field_names" = "speed",                                                  /* field列表,多个field通过逗号分割 */
"tsdb.tag_keys" = "carId",                                                     /* tag列表,多个tag通过逗号分割 */
"tsdb.endpoint" = "ENDPOINT",                                                  /* TSDB实例的endpoint */
"tsdb.access_key" = "AK",                                                      /* AK */
"tsdb.secret_key" = "SK"                                                       /* SK */
);
 
/* ID为“123”的车辆在2017年12月每天的停止时长 */
select floor((time - 1512057600000) / 86400000) + 1 as day, count(*) * 10 as stop_seconds from vehicle
 where carId='123' and time >= 1512057600000 and time < 1514736000000 and speed =
 0 group by floor((time - 1512057600000) / 86400000);
 
/* ID为“123”的车辆在2017年12月每天的运行时长 */
select floor((time - 1512057600000) / 86400000) + 1 as day, count(*) * 10 as run_seconds from 
vehicle where carId='123' and time >= 1512057600000 and time < 1514736000000 and speed >
 0 group by floor((time - 1512057600000) / 86400000);
 
/* ID为“123”的车辆在2017年12月每天的运行时长 */
select floor((time - 1512057600000) / 86400000) + 1 as day, 2678400 - count(*) * 10 as
 offline_seconds from vehicle where carId='123' and time >= 1512057600000 and time
 < 1514736000000 group by floor((time - 1512057600000) / 86400000);

原始数据

metric:vehicle

time field : speed tag
1512086400000 40 carId=123
1512086410000 60 carId=123
1512086420000 50 carId=123
... ... carId=123
1512086460000 10 carId=123

结果

day stop_seconds
1 3612
2 3401
... ...
31 3013
day run_seconds
1 17976
2 17968
... ...
31 17377
day offline_seconds
1 64812
2 65031
... ...
31 66010
相似文档
  • 1 BMR spark sql: 1.1 Spark-tsdb-connector TSDB对接spark sql是通过实现org.apache.spark.rdd.RDD(即Resilient Distributed Dataset)和一些相关的接口,方便用户通过spark来查询TSDB的数据。
  • 各种物联网设备通过百度智能云天工物联网平台接入上云,设备的状态数据实时高效写入到时序数据库中。您可以: 通过时序数据库的数据API接口读取实时数据; 利用时序数据库查询快的优势对数据进行各种聚合运算得到数据报表;
  • 互联网服务可以将用户的访问延迟、查询返回效率、业务服务指标监控数据写入时序数据库中,时序数据库可以做多维度的聚合分析和监控项展示。举个例子,一个音视频点播的服务商,需要将每个房间的清晰度、流畅度、是否卡顿等监控信息实时记录下来,即可以将这些监控项以一定的频率写入时序数据库。
  • 协议生效时间:2019 年 1 月 15 日。 本服务等级协议(Service Level Agreement,简称“SLA”)规定了百度智能云向客户提供时序数据库(TSDB)的服务可用性等级指标及赔偿方案。
  • 数据库创建及设置: 创建示范数据库和创建数据库有什么不同? 时序数据库的数据可以备份到哪里? 能不能增加时序数据库的数据点配额? 数据点查询: 为什么查询面板中生成图表仍为空?
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部