1.先上代码,存入mysql

val spark = SparkSession.builder()
.appName("jdbc")
.getOrCreate()
import spark.implicits._
val pathcsv = "/user/xxx/private/moviecsv"
val csvdf = spark.read.format("csv")
.option("sep", ",")
.option("inferSchema", "true")
.option("header", "true")
.load(pathcsv) csvdf.write
.format("jdbc")
.mode(SaveMode.Overwrite)
.option("url", "jdbc:mysql://ip:port/database?useUnicode=true&characterEncoding=utf-8")
.option("dbtable", "database.table")
.option("user", "root")
.option("password", "")
.option("batchsize", "")
.option("createTableOptions", "engine=MyISAM")
.option("createTableColumnTypes", "Ratings varchar(200)")
.option("truncate", "true") .option("numPartitions", "") .save() spark.stop()

参数解释

url: 连接mysql 的url

user:登陆mysql的用户

password :登陆密码

dbtable: 要访问的数据库 点  表

batchsize : 当条数达到batchsize时会往mysql插入一次数据

truncate : 当savemode是 overwrite时,若dataframe 与原mysql 结构相同,则只truncate mysql,不会重新建表

numPartions : 访问mysql的并发数,注意:当dataframe的分区数小于numPartitions 时,并发数是dataframe的分区数,否则并发数是numPartitions

createTableOptions:建表时的一些额外选项,比如指定engine, "engine=MyISAM",源码中是这样处理createTableOptions 的val sql = s"CREATE TABLE $table ($strSchema) $createTableOptions"

createTableColumnTypes:可以用来替换默认的字段类型,比如name 字段默认是text 类型,可以手动指定为 “name varchar(200)”

2.spark 读取mysql 

   val jdbccdf = spark.read.format("jdbc")
.option("url", "jdbc:mysql://192.168.100.200:1234/data_store?useUnicode=true&characterEncoding=utf-8")
.option("dbtable", "data_store.movieaa")
.option("user", "root")
.option("password", "")
.option("fetchsize", "")
.option("truncate", "true")
.option("numPartitions", "")
.option("partitionColumn", "UserID")
.option("lowerBound", "")
.option("upperBound", "")
.load()
dbtable除了1 中的写法还可以是一个 query :option("dbtable", "(select * from data_store.movieaa where userid between 1000 and 2000) as tt")
partitionColumn:分区列,只支持数值类型,当此参数存在时,lowerBound 和upperBound 必须存在,bound 和numpartition 起到了分区的作用,bound 并不会去过滤数据

spark 存取mysql的更多相关文章

  1. 使用Apache Spark 对 mysql 调优 查询速度提升10倍以上

    在这篇文章中我们将讨论如何利用 Apache Spark 来提升 MySQL 的查询性能. 介绍 在我的前一篇文章Apache Spark with MySQL 中介绍了如何利用 Apache Spa ...

  2. 记录一次spark连接mysql遇到的问题

    版权声明:本文为博主原创文章,未经博主允许不得转载 在使用spark连接mysql的过程中报错了,错误如下 08:51:32.495 [main] ERROR - Error loading fact ...

  3. [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:

    [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jdbc").o ...

  4. spark SQL学习(spark连接 mysql)

    spark连接mysql(打jar包方式) package wujiadong_sparkSQL import java.util.Properties import org.apache.spark ...

  5. spark练习--mysql的读取

    前面我们一直操作的是,通过一个文件来读取数据,这个里面不涉及数据相关的只是,今天我们来介绍一下spark操作中存放与读取 1.首先我们先介绍的是把数据存放进入mysql中,今天介绍的这个例子是我们前两 ...

  6. spark读写mysql

    spark读写mysql除官网例子外还要指定驱动名称 travels.write .mode(SaveMode.Overwrite) .format("jdbc") .option ...

  7. Spark操作MySQL,Hive并写入MySQL数据库

    最近一个项目,需要操作近70亿数据进行统计分析.如果存入MySQL,很难读取如此大的数据,即使使用搜索引擎,也是非常慢.经过调研决定借助我们公司大数据平台结合Spark技术完成这么大数据量的统计分析. ...

  8. 大数据项目实践:基于hadoop+spark+mongodb+mysql+c#开发医院临床知识库系统

    一.前言 从20世纪90年代数字化医院概念提出到至今的20多年时间,数字化医院(Digital Hospital)在国内各大医院飞速的普及推广发展,并取得骄人成绩.不但有数字化医院管理信息系统(HIS ...

  9. spark 连接 mysql 数据库

    在所有master和slave上也要在spark/conf/spark-conf.sh里面设置driver的classpath,解决编译找不到driver的问题 http://www.iteblog. ...

随机推荐

  1. Unity Ioc 依赖倒置及Untity AOP被动拦截/自动拦截

    各位博友金安,首先声明这是一篇转载的博客,原文链接:https://www.cnblogs.com/scottpei/archive/2013/01/08/2851087.html 十年河东,十年河西 ...

  2. Date工具类

    总结了下项目中常用的时间转化方法,目前就这么点啦,以后再慢慢添加,先储备起来,免得丢啦. package com.example.keranbin.testdemo; import android.u ...

  3. 遇到的一个Buffer too small问题

    在ROI中输出图像时遇到 经调试后发现是driver.Create时设置的波段数大于实际写入的波段数导致的 这里xImgIn.m_nBands有204,但实际写入的数据的bands只有3,修改时忘了修 ...

  4. 内核中dump_stack的实现原理(3) —— 内核函数printk的实现

      参考内核文档: Documentation/printk-formats.txt   在内核中使用dump_stack的时候可以看到如下用法: static inline void print_i ...

  5. bootm跳转到kernel的流程

    转自 https://blog.csdn.net/ooonebook/article/details/53495021 一.bootm说明 bootm这个命令用于启动一个操作系统映像.它会从映像文件的 ...

  6. 如何让ThinkPHP支持模糊搜索

    最近ytkah在做一个ThinkPHP的项目时发现了一个问题,搜索的功能只能检索出以*为开头的内容,不能检索出中间的词.例如:搜索包含6775的产品,搜索结果为空,而搜索000-6775 就有两个结果 ...

  7. Comet OJ 夏季欢乐赛 篮球校赛

    Comet OJ 夏季欢乐赛 篮球校赛 题目传送门 题目描述 JWJU注重培养学生的"唱,跳,rap,篮球"能力.于是每年JWJU都会举办篮球校赛,来给同学们一个切磋篮球技术的平台 ...

  8. mybatis学习4

    QL99中的连接查询 连接查询 交叉连接    select * from A,B; 内连接 隐式内连接   select * from A,B where 条件 显示内连接  select * fr ...

  9. Python面向对象 | 初识

    一.面向对象编程 类 : 具有相同属性和技能的一类事物 对象: 就是对一个类的具体的描述 实例化:类——>对象的过程 使用面向对象的好处: 使得代码之间的角色关系更加明确 增强了代码的可扩展性 ...

  10. epoll及实现http多任务(python)

    1.epoll用到了文件描述符的概念: 首先,操作系统中一切皆文件 文件与文件描述符fd 文件是应用程序与系统(包括特定硬件设备)之间的桥梁,而文件描述符就是应用程序使用这个"桥梁" ...