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 ...
随机推荐
- ES6的基础知识总结
一. ES6 ES6中定义变量使用 let/const let 使用let定义的变量不能进行"变量提升" 同一个作用域中,let不能重复定义相同的变量名 使用var在全局作用域中定 ...
- Linux下设置MySQL不区分大写和小写
MySQL在Linux下数据库名.表名.列名.别名大写和小写规则: 1.数据库名与表名是严格区分大写和小写 2.表的别名是严格区分大写和小写 3.列名与列的别名在全部的情况下均是 ...
- u-boot分析1:Nandflash、Norflash启动
了解u-boot之前首先了解下Bootloader,简单说Bootloader就是一段小程序,它在系统上电时开始运行,初始化硬件设备,准备好软件环境,最后调用操作系统内核. u-boot全称:Univ ...
- libSVM介绍(二)
鉴于libSVM中的readme文件有点长,并且,都是採用英文书写,这里,我把当中重要的内容提炼出来,并给出对应的样例来说明其使用方法,大家能够直接參考我的代码来调用libSVM库. 第一部分,利用l ...
- angular项目国际化配置(ngx-translate)
原文 https://www.jianshu.com/p/7d1da3098625 大纲 1.认识ngx-translate 2.ngx-translate的配置步骤 3.ngx-translate的 ...
- (六)RabbitMQ消息队列-消息任务分发与消息ACK确认机制(PHP版)
原文:(六)RabbitMQ消息队列-消息任务分发与消息ACK确认机制(PHP版) 在前面一章介绍了在PHP中如何使用RabbitMQ,至此入门的的部分就完成了,我们内心中一定还有很多疑问:如果多个消 ...
- Vue.js开发环境搭建的介绍
包含了最基础的Vue.js的框架,包含了打包工具和测试工具,开发调试的最基本的服务器,不需要关注细节,只需关注Vuejs对项目的实现 npm在国内的网络使用较慢,所以推荐下载安装淘宝的镜像 1: 2: ...
- [TypeScript] Understand lookup types in TypeScript
Lookup types, introduced in TypeScript 2.1, allow us to dynamically create types based on the proper ...
- sigmoid function vs softmax function
DIFFERENCE BETWEEN SOFTMAX FUNCTION AND SIGMOID FUNCTION 二者主要的区别见于, softmax 用于多分类,sigmoid 则主要用于二分类: ...
- 驱动程序调试方法之printk——自制proc文件(一)
首先我们需要弄清楚proc机制,来看看fs/proc/proc_misc.c这个文件,从入口函数开始看: proc_misc_init(void) #ifdef CONFIG_PRIN ...