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 ...
随机推荐
- Stack overflow 编译能通过,运行时出现Stack overflow
Stack overflow 编译能通过,运行时出现Stack overflow 大家都知道,Windows程序的内存机制大概是这样的,全局变量(局部的静态变量本质也属于此范围)存储于堆内存,该段内存 ...
- COdeVS——T 1082 线段树练习 3 (分块练习)
http://codevs.cn/problem/1082/ 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 题目描述 Descriptio ...
- Android开发之搜芽项目的图片载入问题(使用Volley进行网络图片载入)
搜芽的移动开发这几天进度相对来说很的快. 可是美中不足的就是网络图片的载入问题. 我有两套方案: 1)沿用迅雷动漫的图片载入.迅雷动漫也是用的一个开源的库.可是不知道是我使用出了问题还是真的是它的问题 ...
- c++中的相对路径
今天在vs2010里读取相对路径下的图片文件出了点问题.于是查了一下相对路径的编程知识,记录下来分享给大家: 问题描写叙述:path=".\\TrainData\\& ...
- HDU 1556 Color the ball【算法的优化】
/* 解题思路:每次仅仅求解一開始的第一个数字,让第一个数字加一,最后的一个数字的后面一个数减一.我们能够想想,最后加的时候,就是加上前面一个数出现的次数和自己本身出现的次数. 解题人:lingnic ...
- js的继承操作案例
js的继承操作案例 一.总结 1.要案例要求,内心中想出操作要点 二.js的继承操作案例 案例 练习1:具有默认值的构造函数 实例描述: 有时候在创建对象时候,我们希望某些属性具有默认值 案例思路: ...
- UVA 10635 - Prince and Princess LCS转化为LIS
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- VSX(翻译)Moving Code Blocks Among Code Regions using VS 2010 Extensions
Moving Code Blocks Among Code Regions using VS 2010 Extensions (翻译)使用VS 2010 扩展性将代码块移至Region区域中 Down ...
- AM335x(TQ335x)学习笔记——Nand&&网卡驱动移植
移植完毕声卡驱动之后本想再接再励,移植网卡驱动,但没想到的是TI维护的内核太健壮,移植网卡驱动跟之前移植按键驱动一样简单,Nand驱动也是如此,于是,本人将Nand和网卡放在同一篇文章中介绍.介绍之前 ...
- js进阶 12-3 如何实现元素跟随鼠标移动
js进阶 12-3 如何实现元素跟随鼠标移动 一.总结 一句话总结:获取鼠标位置,将鼠标位置设置为元素偏移即可. 1.用什么事件获取鼠标位置? 用mousemove可以获取鼠标移动的时候的位置 $(d ...