SparkDataFrame操作TiDB数据

文章目录

      • 前言
      • TiDB单机搭建
      • sparkDataFrame连接TiDB

前言

前几天领导让用spark集成TiDB支持读写,没办法只能简单的了解一下TiDB,然后搭建了一个单机版的TiDB测试使用,这里也理解的比较浅显,毕竟时间紧任务重,一切以完成任务为目的。。。
SparkDataFrame操作TiDB数据_第1张图片

这里也附上几个我开发时用到的一些连接:
安装参考视频,安装参考博客,代码参考地址,中文文档地址

开发所需pom依赖

<dependency>
 	<groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
    <type>jar</type>
</dependency>

//以下这个依赖删除也没出毛病,毕竟spark连接TiDB使用的是mysql驱动
<!--
<dependency>
  <groupId>com.pingcap.tispark</groupId>
  <artifactId>tispark-assembly</artifactId>
  <version>2.3.9</version>
</dependency>
-->

TiDB单机搭建

由于是测试使用,所以搭建怎么简单怎么来的,没进行太多的额外功能修改

1.安装
	1.1获取压缩包
	wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz
	1.2解压
	tar -xzf tidb-latest-linux-amd64.tar.gz -C /自定义目录
	1.3启动PD(放入后台启动)
	./bin/pd-server --data-dir=pd --log-file=pd.log &    
	1.4启动TiKV(放入后台启动)
	./bin/tikv-server  --pd="127.0.0.1:2379"  --data-dir=tikv  --log-file=tikv.log &
	1.5启动TiDB(放入后台启动)
	./bin/tidb-server  --store=tikv  --path="127.0.0.1:2379"  --log-file=tidb.log &

2.连接(使用mysql连接TiDB)
mysql -h127.0.0.1 -P4000 -uroot

3.使用Navicat连接TiDB(记得没错的话,密码为空)

这里附上一张用Navicat连接TiDB的截图:
SparkDataFrame操作TiDB数据_第2张图片

sparkDataFrame连接TiDB

val conf = new SparkConf().setAppName("test").setMaster("local[4]")
val spark = SparkSession.builder().config(conf).getOrCreate()

//读数据
val df= spark.read.format("jdbc")
      .option("url", "jdbc:mysql://127.0.0.1:4000/dbname")
      .option("driver", "com.mysql.jdbc.Driver")
      .option("dbtable", "tc_table")
      .option("user", "root")
      .option("password","password")
      .load()
df.show()

//写数据
//模拟DataFrame数据
val df = spark.createDataFrame(Seq(
     ("ming", 20, 15552211521L),
     ("hong", 19, 13287994007L),
     ("zhi", 21, 15552211523L)
   )).toDF("name", "age", "phone")
   
val properties = new Properties()
properties.put("user", "root")
properties.put("password", "password")
properties.put("driver","com.mysql.jdbc.Driver")
properties.put("isolationLevel","NONE")  //如果这里事务不设置NONE,会报错
//写入TiDB数据库的tc_table表中
df.write.mode(SaveMode.Append).jdbc("jdbc:mysql://127.0.0.1:4000/dbname","tc_table",properties)

直到现在对于TiDB的了解也是比较浅,毕竟只是为了应付开发去了解的,所以具体的学习可以去参考上面的官方文档链接

你可能感兴趣的:(scala,spark)