本文介绍如何使用JDBC数据源进行数据分析或者交互式开发。

建表语法

CREATE TABLE tbName
USING jdbc2
OPTIONS(propertyName=propertyValue[,propertyName=propertyValue]*);

配置参数说明

参数名 说明 是否必选
url 数据库地址。
driver 数据库连接的JDBC驱动。例如com.mysql.jdbc.Driver”eper.quorum":"a.b.c.d:2181"}
dbtable 数据表名称。
user 连接的用户名。
password 连接的密码。
batchsize 每个批次更新的数据条数。

仅向数据库写入数据时生效。

isolationLevel 事务隔离级别,默认值为READ_UNCOMMITTED。
事务隔离级别详情如下。
事务隔离级别 脏读 不可重复读 幻读
READ_UNCOMMITTED
READ_COMMITTED
REPEATABLE_READ
SERIALIZABLE
NONE

Table Schema

创建JDBC表时,无需显式地定义表的字段信息,示例如下所示。
spark-sql> CREATE DATABASE IF NOT EXISTS default;
spark-sql> USE default;
spark-sql> DROP TABLE IF EXISTS rds_table_test;
spark-sql> CREATE TABLE rds_table_test
         > USING jdbc2
         > OPTIONS (
         > url="jdbc:mysql://rm-bp11*********i7w9.mysql.rds.aliyuncs.com:3306/default?useSSL=true",
         > driver="com.mysql.jdbc.Driver",
         > dbtable="test",
         > user="root",
         > password="thisisapassword",
         > batchsize="100",
         > isolationLevel="NONE");

spark-sql> DESC rds_table_test;
id  int NULL
name  string  NULL
Time taken: 0.413 seconds, Fetched 2 row(s)

写入数据

当您需要向数据库中写入数据时,可以通过以下命令设置一个关联的SQL Statement来实现。
spark-sql> SET streaming.query.${queryName}.sql=insert into `test` (`id`,`name`) values(?, ?);
spark-sql> SET ...
spark-sql> INSERT INTO rds_table_test SELECT ...