
# OpenTSDB结果表
#### 功能描述
OpenTSDB是基于HBase分布式的 ，可伸缩的时间序列数据库。OpenTSDB的设计目标是用来采集大规模集群中的监控类信息，并可实现数据的秒级查询，解决海量监控类数据在普通数据库中查询存储的局限性，可用于系统监控和测量、物联网数据、金融数据和科学实验结果数据的收集监控。
DLI可以通过增强型跨源连接功能将Flink作业的输出数据写入到OpenTSDB中。
#### 前提条件
- 确保已经开启OpenTSDB服务。
- 该场景作业需要运行在DLI的独享队列上，因此在DLI上要与OpenTSDB建立增强型跨源连接，且用户可以根据实际所需设置相应的安全组规则。
  - 如何建立增强型跨源连接，请参考《数据湖探索用户指南》中[增强型跨源连接](https://support.huaweicloud.com/usermanual-dli/dli_01_0426.html)章节。
  
  - 如何设置安全组规则，请参见[《虚拟私有云用户指南》](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0073379079.html)中"安全组"章节。
   
 
#### 语法格式
```
create table tsdbSink (
  attr_name attr_type 
  (',' attr_name attr_type)* 
)
with (
  'connector.type' = 'opentsdb',
  'connector.region' = '',
  'connector.tsdb-metrics' = '',
  'connector.tsdb-timestamps' = '',
  'connector.tsdb-values' = '',
  'connector.tsdb-tags' = '',
  'connector.tsdb-link-address' = ''
);
```
#### 参数说明
表1参数说明 
| 参数                              | 是否必选 | 说明                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|
| connector.type                  | 是    | connector的类型，只能为opentsdb。                                                                                                                                                                                                                                                                               |
| connector.region                | 是    | OpenTSDB服务所在的区域。                                                                                                                                                                                                                                                                                        |
| connector.tsdb-metrics          | 是    | 数据点的metric，支持参数化。 其个数为要为1或者和"connector.tsdb-values"个数相同。 多个metric请使用";"分隔。                                                                                                            |
| connector.tsdb-timestamps       | 是    | 数据点的timestamp，仅支持指定动态列。 数据类型支持int、bigint、string，仅支持数据形式。 其个数需要为1或者和"connector.tsdb-values"的个数相同。 多个timestamp请使用";"分隔。 |
| connector.tsdb-values           | 是    | 数据点的value，支持指定动态列或者常数值。 多个values请使用";"分隔。                                                                                                                                                                                                    |
| connector.tsdb-tags             | 是    | 数据点的tags，每个tags里面至少一个标签值，最多8个标签值，多个标签使用","分隔，支持参数化。 其个数需要为1或者和"connector.tsdb-values"的个数相同。 多个tags请使用";"分隔。                                                                        |
| connector.batch-insert-data-num | 否    | 表示一次性批量写入的数据量，即数据条数，值必须为正整数，默认值为8。                                                                                                                                                                                                                                                                      |
| connector.tsdb-link-address     | 是    | 待插入数据所属集群的OpenTSDB连接地址。                                                                                                                                                                                                                                                                                 |
   
#### 注意事项
- 若使用MRS集群的OpenTSDB，请确保以下几点：
  1. OpenTSDB的ip地址和端口请从OpenTSDB服务配置中查看配置项"tsd.network.bind"和"tsd.network.port"分别获取。
  
  2. 若OpenTSDB服务配置项"tsd.https.enabled"的值为true，则sql语句中的"connector.tsdb-link-address"参数值格式为https://ip:port。若"tsd.https.enabled"为false，则"connector.tsdb-link-address"参数值格式可以为http://ip:port或者ip:port。
  
  3. 在建立增强型跨源连接时，需要将MRS集群中的/etc/hosts主机和ip映射信息添加到"主机信息"参数中。
   

- 当配置项支持参数化时，表示将记录中的一列或者多列作为该配置项的一部分。例如当配置项设置为car_${car_brand}时，如果一条记录的car_brand列值为BMW，则该配置项在该条记录下为car_BMW。
- 若支持动态列，则其形式需要为${*columnName*}，其中columnName为相应的字段名。
 
#### 示例
```
create table sink1(
  attr1 bigint,
  attr2 int,
  attr3 int
) with (
  'connector.type' = 'opentsdb',
  'connector.region' = '',
  'connector.tsdb-metrics' = '',
  'connector.tsdb-timestamps' = '${attr1}',
  'connector.tsdb-values' = '${attr2};10',
  'connector.tsdb-tags' = 'key1:value1,key2:value2;key3:value3',
  'connector.tsdb-link-address' = ''
);
```
