首页 > 其他分享 >TDengine Pom

TDengine Pom

时间:2022-12-02 18:36:51浏览次数:64  
标签:taosdata TDengine Pom https jdbc com taos

TDengine Pom

pom xml

D:\noteMe\md\时序数据库

https://blog.csdn.net/taos_data/article/details/106851359

<dependency>
        <groupId>com.taosdata.jdbc</groupId>
        <artifactId>taos-jdbcdriver</artifactId>
        <version>1.0.3</version>
    </dependency>

TDengine虽未提供Spark调用的DataSource,但TDengine本身也支持JDBC,因此,这里使用spark-jdbc来读取TDengine,最新版本可以到官网下载,我这里用的是如下版本:

由于TDengine是使用C语言开发的,使用taos-jdbcdriver驱动包时需要依赖系统对应的本地函数库。

  1. libtaos.so在Linux系统中成功安装TDengine后,依赖的本地函数库libtaos.so文件会被自动拷贝至/usr/lib/libtaos.so,该目录包含在Linux自动扫描路径上,无需单独指定。

2.taos.dll在windows系统中安装完客户端之后,驱动包依赖的taos.dll文件会自动拷贝到系统默认搜索路径C:/Windows/System32下,同样无需要单独指定。

第一次使用时,为了保证机器上有libtaos.so或taos.dll,需要在本地安装TDengine客户端(客户端请至TDengine官网下载)
————————————————

    val jdbccdf = spark
      .read
      .format("jdbc")
      .option("url", "jdbc:TAOS://192.168.1.151:6030/log")
      .option("driver", "com.taosdata.jdbc.TSDBDriver")
      .option("dbtable", "log")
      .option("user", "root")
      .option("password", "taosdata")
      .option("fetchsize", "1000")
      .load()

因为在读TDengine的时候,第一个字段ts会被转换为decimal,但是存储时直接存decimal tdengine是不认的,所以需要将ts进行类型转换

jdbccdf.select(($"ts" / 1000000).cast(TimestampType).as("ts"), $"level", $"content", $"ipaddr")
.write.format("jdbc")
.option("url", "jdbc:TAOS://192.168.1.151:6030/test?charset=UTF-8&locale=en_US.UTF-8")
.option("driver", "com.taosdata.jdbc.TSDBDriver")
.option("dbtable", "log2")
.option("user", "root")
.option("password", "taosdata")
.mode(SaveMode.Append)
.save()

  1. Spark yarn模式运行TDengine
    上面的测试都是基于maser为local测试的,如果以yarn模式运行,则在每个节点上都安装TDengine客户端是不现实的,查看taos-jdbcdriver的代码,发现,driver会执行System.load(“taos”),也就是说只要java.library.path中存在 libtaos.so,程序就可正常运行,不必安装TDengine的客户端,因为java.library.path是在jvm启动时就设置好的,要更改它的值,可以采用动态加载,采用如下方法解决了加载libtaos.so的问题:

(1) 将driver端libtaos.so发送到各个executor

spark.sparkContext.addFile("/path/to/libtaos.so")

(2) 重写Spark中JdbcUtils类中的createConnectionFactory方法,添加

loadLibrary(new File(SparkFiles.get("libtaos.so")).getParent)

进行java.library.path的动态加载

def createConnectionFactory(options: JDBCOptions): () => Connection = {
val driverClass: String = options.driverClass
() => {
loadLibrary(new File(SparkFiles.get("libtaos.so")).getParent)
DriverRegistry.register(driverClass)
val driver: Driver = DriverManager.getDrivers.asScala.collectFirst {
case d: DriverWrapper if d.wrapped.getClass.getCanonicalName == driverClass => d
case d if d.getClass.getCanonicalName == driverClass => d
}.getOrElse {
throw new IllegalStateException(
s"Did not find registered driver with class $driverClass")
}
driver.connect(options.url, options.asConnectionProperties)
}
}

(3) loadLibrary方法如下

def loadLibrary(libPath: String): Unit = {
var lib = System.getProperty("java.library.path")
val dirs = lib.split("

标签:taosdata,TDengine,Pom,https,jdbc,com,taos
From: https://www.cnblogs.com/cw2blog/p/16945305.html

相关文章

  • POM文件的标签解读
    <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4......
  • idea创建SpringBoot项目时,Type 选择 maven project 和maven pom 有什么区别?
    https://blog.csdn.net/bin_0203/article/details/121841615 在操作到Type选项时有四种项目类型可供选择:MavenProject(GenerateaMavenbasedprojectarchive)M......
  • springboot从yaml文件读取pom文件的properties
     如果没有其他配置,只能读取启动类模块下和父级模块的pom的properties,以下是配置:<properties><revision>1.0</revision></properties><build><res......
  • maven项目的pom.xml文件常用标签使用介绍
    一丶pom.xml文件常用标签使用介绍<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="htt......
  • Maven的pom.xml介绍
    6       Maven的pom.xml介绍6.1     简介文件是Maven进行工作的主要配置文件。在这个文件中我们可以配置Maven项目的groupId、artifactId和version等Maven项目......
  • 'packaging' with value 'jar' is invalid. Aggregator projects require 'pom&#
    'packaging'withvalue'jar'isinvalid.Aggregatorprojectsrequire'pom'aspackaging.1.报错信息packaging'withvalue'jar'isinvalid.Aggregatorproject......
  • Maven之自定义pom类型的基础项目
    摘要:在当前的软件开发场景中,大都是通过maven管理项目,而如果使用maven的话,其实也会有很多问题,比如项目中依赖的版本管理就是一个很头疼的事,如果一个......
  • jave web开发(IDEA中配置maven + 第一个pom包)
        maven是现在java中用的比较多的一个软件。一方面,maven可以单独使用;另外一方面maven也可以和各个IDE进行配合,比如刚刚安装的IDEA,就可以和maven进行联合配置使用......
  • 初识TDengine
    1.几个概念TSDB:TimeSeriesDatabase,时序数据库。非关系型数据库,主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。......
  • 读懂maven的pom文件和seting文件
    <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache......