对接hive-sql

时序时空数据库 TSDB

  • 功能发布记录
  • 产品描述
    • 名词解释
    • 产品概述
    • 数据结构
    • 产品优势
    • 产品功能
    • 系统限制
  • Python-SDK
    • 管理接口
    • 生成查询数据点的预签名URL
    • 写入数据点的Gzip压缩说明
    • 查询操作
    • 写入操作
    • 创建TsdbClient
    • Demo工程下载
    • 版本说明
    • 安装SDK工具包
    • 概述
  • 申请邀请
    • 申请成为邀测用户
  • Java-SDK
    • 管理接口
    • 生成查询数据点的预签名URL
    • 写入数据点的gzip压缩说明
    • 查询操作
    • 写入操作
    • 创建TsdbClient
    • Demo工程下载
    • 版本说明
    • 快速入门
    • 安装SDK工具包
    • 概述
  • SQL参考
    • 支持SQL查询
    • 对接hive-sql
    • 支持MySQL协议
    • 对接spark-sql
  • 快速入门
    • 使用API入门
    • 创建数据库
    • 通过查询面板生成图表
    • 连接数据库
    • 概述
  • 典型实践
    • 物联网设备状态监控存储分析
    • 互联网业务性能监控服务
  • 操作指南
    • 多用户访问控制
    • 数据预处理
    • 时空服务
    • 数据管理
    • 与天工产品对接
    • 数据可视化
    • 数据库管理
    • 插值查询
  • 服务等级协议SLA
    • 时序数据库TSDB服务等级协议SLA(V2.0)
  • Node-SDK
    • 管理接口
    • 生成查询数据点的预签名URL
    • 写入数据点的gzip压缩说明
    • 查询操作
    • 写入操作
    • 创建TsdbClient
    • Demo工程下载
    • 版本说明
    • 快速入门
    • 安装SDK工具包
    • 错误码
    • 概述
  • API参考
    • 介绍
    • 聚合函数
    • 时间单位
    • 附录
    • 更新历史
    • 数据API接口说明
    • 管理API接口说明
    • 分组方式
  • 常见问题
    • 数据库创建及设置
    • 数据点查询
    • 数据管理
    • 用量提示
    • 常见问题总览
    • 数据点写入
  • 产品定价
    • 到期停服处理
    • 预付费
所有文档
menu
没有找到结果,请重新输入

时序时空数据库 TSDB

  • 功能发布记录
  • 产品描述
    • 名词解释
    • 产品概述
    • 数据结构
    • 产品优势
    • 产品功能
    • 系统限制
  • Python-SDK
    • 管理接口
    • 生成查询数据点的预签名URL
    • 写入数据点的Gzip压缩说明
    • 查询操作
    • 写入操作
    • 创建TsdbClient
    • Demo工程下载
    • 版本说明
    • 安装SDK工具包
    • 概述
  • 申请邀请
    • 申请成为邀测用户
  • Java-SDK
    • 管理接口
    • 生成查询数据点的预签名URL
    • 写入数据点的gzip压缩说明
    • 查询操作
    • 写入操作
    • 创建TsdbClient
    • Demo工程下载
    • 版本说明
    • 快速入门
    • 安装SDK工具包
    • 概述
  • SQL参考
    • 支持SQL查询
    • 对接hive-sql
    • 支持MySQL协议
    • 对接spark-sql
  • 快速入门
    • 使用API入门
    • 创建数据库
    • 通过查询面板生成图表
    • 连接数据库
    • 概述
  • 典型实践
    • 物联网设备状态监控存储分析
    • 互联网业务性能监控服务
  • 操作指南
    • 多用户访问控制
    • 数据预处理
    • 时空服务
    • 数据管理
    • 与天工产品对接
    • 数据可视化
    • 数据库管理
    • 插值查询
  • 服务等级协议SLA
    • 时序数据库TSDB服务等级协议SLA(V2.0)
  • Node-SDK
    • 管理接口
    • 生成查询数据点的预签名URL
    • 写入数据点的gzip压缩说明
    • 查询操作
    • 写入操作
    • 创建TsdbClient
    • Demo工程下载
    • 版本说明
    • 快速入门
    • 安装SDK工具包
    • 错误码
    • 概述
  • API参考
    • 介绍
    • 聚合函数
    • 时间单位
    • 附录
    • 更新历史
    • 数据API接口说明
    • 管理API接口说明
    • 分组方式
  • 常见问题
    • 数据库创建及设置
    • 数据点查询
    • 数据管理
    • 用量提示
    • 常见问题总览
    • 数据点写入
  • 产品定价
    • 到期停服处理
    • 预付费
  • 文档中心
  • arrow
  • 时序时空数据库TSDB
  • arrow
  • SQL参考
  • arrow
  • 对接hive-sql
本页目录
  • Tsdb storage handler
  • 在Hive CLI或Hue中使用
  • 场景示例
  • 计算风速
  • 计算车辆在时间上的使用情况

对接hive-sql

更新时间:2025-08-22

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中使用

示例及参数说明如下:

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

在endpoint为IP:PORT的情形下:

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

场景示例

计算风速

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

Plain Text
1add jar /path/to/hive-tsdb-handler_all.jar;    /* 添加jar,如果在bmr中,请使用bos地址,如bos://path/to/hive-tsdb-handler_all.jar */ 
2CREATE EXTERNAL TABLE `WindSpeed`(`time` bigint, `x` double, `y` double)       /* 创建表 */
3STORED BY 'com.baidubce.tsdb.hive.storage.TsdbStorageHandler'                  /* 设置storage为TsdbStorageHandler */
4TBLPROPERTIES (
5"tsdb.metric_name" = "WindSpeed",                                              /* Metric名字,默认表名则被当为metric */
6"tsdb.timestamp_name" = "time",                                                /* Timestamp对应的列名,默认time为对应的列名 */
7"tsdb.field_names" = "x,y",                                                    /* field列表,多个field通过逗号分割 */
8"tsdb.endpoint" = "ENDPOINT",                                                  /* TSDB实例的endpoint */
9"tsdb.access_key" = "AK",                                                      /* AK */
10"tsdb.secret_key" = "SK"                                                       /* SK */
11);
12 
13select 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)离线时长:一段时间内这台车子没有上报数据的时长,这台车子已经停下并熄火了。

Plain Text
1add jar /path/to/hive-tsdb-handler_all.jar;    /* 添加jar,如果在bmr中,请使用bos地址,如bos://path/to/hive-tsdb-handler_all.jar */ 
2CREATE EXTERNAL TABLE `vehicle`(`time` bigint, `speed` bigint, `carId` string) /* 创建表 */
3STORED BY 'com.baidubce.tsdb.hive.storage.TsdbStorageHandler'                  /* 设置storage为TsdbStorageHandler */
4TBLPROPERTIES (
5"tsdb.metric_name" = "vehicle",                                                /* Metric名字,默认表名则被当为metric */
6"tsdb.timestamp_name" = "time",                                                /* Timestamp对应的列名,默认time为对应的列名 */
7"tsdb.field_names" = "speed",                                                  /* field列表,多个field通过逗号分割 */
8"tsdb.tag_keys" = "carId",                                                     /* tag列表,多个tag通过逗号分割 */
9"tsdb.endpoint" = "ENDPOINT",                                                  /* TSDB实例的endpoint */
10"tsdb.access_key" = "AK",                                                      /* AK */
11"tsdb.secret_key" = "SK"                                                       /* SK */
12);
13 
14/* ID为“123”的车辆在2017年12月每天的停止时长 */
15select 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);
16 
17/* ID为“123”的车辆在2017年12月每天的运行时长 */
18select 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);
19 
20/* ID为“123”的车辆在2017年12月每天的运行时长 */
21select 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

上一篇
支持SQL查询
下一篇
支持MySQL协议