sparksql jdbc数据源
用的本地模式,pom.xml中添加了mysql驱动包,mysql已经开启,写入的时候发现用format("jdbc").save()的方式发现会有does not allow create table as select的异常,于是去官方文档上发现了使用jdbc()的方式,测试
正常,说明下Properties是java.util.Properties

java
public class Demo {
private static SparkSession session = SparkSession.builder().appName("demo").master("local").getOrCreate();
public static void main(String[] args) {
Map<String, String> options = new HashMap<>();
options.put("url", "jdbc:mysql://127.0.0.1:3306/studentmanage");
options.put("driver", "com.mysql.jdbc.Driver");
options.put("dbtable", "studentmanage.admin");
options.put("user", "root");
options.put("password", "root");
// 读取
Dataset<Row> dataset = session.read().format("jdbc").options(options).load();
dataset.show();
// 创建数据
List<Row> list = new ArrayList<Row>();
Row row1 = RowFactory.create("tele", "123", "male", "China", 1, "admin");
Row row2 = RowFactory.create("wyc", "123", "male", "China", 1, "admin");
Row row3 = RowFactory.create("xxx", "123", "male", "China", 1, "admin");
list.add(row1);
list.add(row2);
list.add(row3);
// 写入
StructType schema = DataTypes
.createStructType(Arrays.asList(DataTypes.createStructField("name", DataTypes.StringType, false),
DataTypes.createStructField("pwd", DataTypes.StringType, false),
DataTypes.createStructField("sex", DataTypes.StringType, false),
DataTypes.createStructField("nation", DataTypes.StringType, false),
DataTypes.createStructField("status", DataTypes.IntegerType, false),
DataTypes.createStructField("type", DataTypes.StringType, false)));
Dataset<Row> ds = session.createDataFrame(list, schema);
Properties connectionProperties = new Properties();
connectionProperties.put("user", "root");
connectionProperties.put("password", "root");
// 也可以对dataset进行遍历使用原生的jdbc或者dbutils等进行写入
ds.write().mode(SaveMode.Append).jdbc("jdbc:mysql://127.0.0.1:3306/studentmanage", "admin",
connectionProperties);
session.stop();
}
}
scala
object Demo {
def main(args: Array[String]): Unit = {
val session = SparkSession.builder().appName("demo").master("local").getOrCreate()
val options = Map[String, String](
("url", "jdbc:mysql://127.0.0.1:3306/studentmanage"),
("driver", "com.mysql.jdbc.Driver"),
("dbtable", "studentmanage.admin"),
("user", "root"),
("password", "root"))
//读取
val df = session.read.options(options).format("jdbc").load()
df.show()
//写入
val arrBuffer = Array(Row("yeye", "123", "male", "us", 1, "admin")).toBuffer
val schema = DataTypes.createStructType(Array(
StructField("name", DataTypes.StringType, false),
StructField("pwd", DataTypes.StringType, false),
StructField("sex", DataTypes.StringType, false),
StructField("nation", DataTypes.StringType, false),
StructField("status", DataTypes.IntegerType, false),
StructField("type", DataTypes.StringType, false)))
val result = session.createDataFrame(arrBuffer, schema)
val properties = new Properties
properties.put("user", "root")
properties.put("password", "root")
result.write.mode(SaveMode.Append).jdbc("jdbc:mysql://127.0.0.1:3306/studentmanage", "admin", properties)
session.stop
}
}
sparksql jdbc数据源的更多相关文章
- SparkSQL JDBC和JDBCServer区别
注意SparkSQL JDBC和SparkSQL JDBCSever是完全两种不同的场景. SparkSQL JDBC SparkSQL可以使用JDBC的方式访问其他数据库,和普通非spark程序访问 ...
- SparkSql自定义数据源之读取的实现
一.sparksql读取数据源的过程 1.spark目前支持读取jdbc,hive,text,orc等类型的数据,如果要想支持hbase或者其他数据源,就必须自定义 2.读取过程 (1)sparksq ...
- Tomcat中使用JNDI加载JDBC数据源
以前写JDBC的时候总是手工写一个类,用硬代码写上className.url.用户名和密码什么的,然后通过DriverManager获取到Connection.那样写是很方便,但是如果想更改的话,需要 ...
- spring中配置jdbc数据源
1.加入jdbc驱动器包,mysql-connector-java.jar 2.加入commons-dbcp.jar配置数据源 3.在classpath下新建文件jdbc.properties,配置j ...
- weblogic配置jdbc数据源
weblogic配置jdbc数据源的过程 方法/步骤 启动weblogic 管理服务器,使用管理用户登录weblogic管理控制台 打开管理控制台后,在左侧的树形域结构中,选择服务->数 ...
- JDBC数据源 使用JNDI连接池实现数据库的连接
0.引言 许多Web应用程序需要通过JDBC驱动程序访问数据库,以支持该应用程序所需的功能.Java EE平台规范要求Java EE应用程序服务器为此目的提供一个DataSource实现(即,用于JD ...
- JDBC数据源连接池(4)---自定义数据源连接池
[续上文<JDBC数据源连接池(3)---Tomcat集成DBCP>] 我们已经 了解了DBCP,C3P0,以及Tomcat内置的数据源连接池,那么,这些数据源连接池是如何实现的呢?为了究 ...
- JDBC数据源连接池(3)---Tomcat集成DBCP
此文续<JDBC数据源连接池(2)---C3P0>. Apache Tomcat作为一款JavaWeb服务器,内置了DBCP数据源连接池.在使用中,只要进行相应配置即可. 首先,确保Web ...
- JDBC数据源连接池(2)---C3P0
我们接着<JDBC数据源连接池(1)---DBCP>继续介绍数据源连接池. 首先,在Web项目的WebContent--->WEB-INF--->lib文件夹中添加C3P0的j ...
随机推荐
- Android应用开发-小巫CSDN博客client之获取评论列表
Android应用开发-小巫CSDN博客客户端之获取评论列表 上一篇博客介绍了博文具体内容的业务逻辑实现,本篇博客介绍小巫CSDN博客客户端的最后一项功能.获取评论列表,这个功能的实现跟前面获取文章列 ...
- SSMM框架
IDEA搭建SSMM框架(详细过程) 相关环境 Intellij IDEA Ultimate Tomcat JDK MySql 5.6(win32/win64) Maven (可使用Intellij ...
- SN74HC573ANSR 锁存器
这是它的工作电压范围 这个是功能表,数电上曾经学过: 内部的框图,也是数电的知识:
- Day3:集合
一.集合的定义及特性 1.集合的特性 1.1 去重,把一个列表变成集合,就自动去重了 1.2 关系测试,测试两组数据之间的交集.差集等关系 #!/usr/bin/env python # -* ...
- LoadRunner--HTML与URL录制方式区别
Recording录制选项 这里提供了两个大类的录制方式: 1. HTML-based script基于HTML的脚本 这种方式录制出来的脚本是基于HTML基础的,为每个用户操作生成单独的步骤,这种脚 ...
- Scala入门到精通——第十九节 隐式转换与隐式參数(二)
作者:摇摆少年梦 配套视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 隐式參数中的隐式转换 函数中隐式參数使用概要 隐式转换问题梳理 1. 隐式參数中的 ...
- iOS:实现图片的无限轮播---之使用第三方库SDCycleScrollView
SDCycleScrollView API // // SDCycleScrollView.h // SDCycleScrollView #import <UIKit/UIKit.h> ...
- Java与IOS日期格式
//JAVA日期格式 Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM- ...
- android闹钟实现原理
闹钟的原理可用下面我自己画的一幅图来概括:(不对的地方,尽管吐槽) 我们来看看新建闹钟到闹钟响铃的步骤: 1.新建一个闹钟: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- [Angular Unit Testing] Debug unit testing -- component rendering
If sometime you want to log out the comonent html to see whether the html render correctly, you can ...