spark 集成 ClickHouse 和 MySQL (读和写操作)(笔记)

目录

前言:

一.spark读出

1. spark 读出 MySQL表数据

1.2 spark 读出 ClickHouse表数据

 二.spark写入

1. spark 写入 MySQL表数据

 2.spark 写入 ClickHouse表数据


前言:

这篇文章主要记录的是用spark集成ClickHouse和MySQL,

将数据read出,和将数据write写入表的 (记录笔记)

创建sparkSession

因为这个不是重点,所以先简单创建下,实际是需要按照你的需求创建的

// 创建SparkSession
val spark = SparkSession.builder().appName("Write to MySQL").config("spark.sql.catalogImplementation", "hive").getOrCreate()

一.spark读出

1. spark 读出 MySQL表数据

//读取数据    spark.read.format("jdbc").option("url","jdbc:mysql://address-ip:3306/ds_db01??characterEncoding=UTF-8")  //url.option("driver","com.mysql.jdbc.Driver")     //驱动.option("user","root")                        //用户名.option("password","123456")                   //密码.option("dbtable","product_info")                //表.load().createOrReplaceTempView("v")spark.sql("select * from v")      //查询

1.2 spark 读出 ClickHouse表数据

    //    以jdbc为连接方式进行连接clickhouseval frame = sc.read.format("jdbc").option("driver","ru.yandex.clickhouse.ClickHouseDriver" )//      配置driver.option("url", "jdbc:clickhouse:/address-ip:8123/shtd_result")//       配置url.option("dbtable", "cityavgcmpprovince").option("user", "default").option("password", "123456").load()

 二.spark写入

1. spark 写入 MySQL表数据

// 将数据写入MySQL表
processedData.write.format("jdbc").option("driver", "com.mysql.jdbc.Driver").option("url", "jdbc:mysql://mysql-host:3306/database").option("dbtable", "mysql_table").option("user", "username").option("password", "password").mode(SaveMode.Append).save()

 2.spark 写入 ClickHouse表数据

// 将数据写入ClickHouse表
processeData.write.format("jdbc").option("driver", "ru.yandex.clickhouse.ClickHouseDriver").option("url", "jdbc:clickhouse://clickhouse-host:8123/database").option("dbtable", "clickhouse_table").option("user", "username").option("password", "password").mode(SaveMode.Append).save()
processedData:代表你处理好的数据的DataFrame对象。
path/to/processedData.parquet:代表你处理好的数据的存储路径,可以是Parquet、CSV等格式。
mysql-host:代表MySQL数据库的主机名或IP地址。
database:代表MySQL数据库的名称。
mysql_table:代表要写入的MySQL表的名称。
username:代表连接MySQL所需的用户名。
password:代表连接MySQL所需的密码

mode参数

1. SaveMode.Append:将新数据追加到目标表的末尾。如果表不存在,则创建一个新表并保存数据。

2. SaveMode.Overwrite:完全覆盖目标表的数据。如果表不存在,则创建一个新表并保存数据。

3. SaveMode.ErrorIfExists:如果目标表已经存在,则抛出一个错误。用于避免意外地覆盖已有数据。

4. SaveMode.Ignore:如果目标表已经存在,则忽略保存操作,不做任何处理。

这些参数用于指定保存数据时的行为。根据具体的需求,选择合适的保存模式可以确保数据正确地保存到目标表中,同时避免意外覆盖或丢失数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贪心算法-金条切割问题

1、题目描述 一块金条切成两半,是需要花费和长度数值一样的铜板的。比如长度为20的金条,不管切成长度多大的两半,都要花费20个铜板。 问:一群人想整分整块金条,怎么分最省铜板? 例如,给定数组{1…

shell脚本使用(宿主机windows-服务器-centos)--用于使用shell脚本方式控制docker容器

需求: 我想要使得windows上编写shell脚本,并且在这个shell脚本在linux中也可用 shell脚本在windows上无法直接运行,但是有WSL这个linux子系统的工具 可以使得shell脚本在主机上执行 视频讲解连接 https://www.bilibili.com/video/BV1Tw411Y7FP/方式1 …

elasticsearch和mongodb对比

一般来说,我们会将elasticsearch和mongodb一起使用,那为什么我们不能只用其中一个呢? MongoDB 优点:数据写入性能优于ElasticSearch(但比不上Redis)、数据约束性强、完善的权限机制。 缺点:只…

filament渲染引擎中的坐标转换

文章目录 背景openGL中的坐标转换简单的概念介绍 屏幕坐标转世界坐标openGL的实现filament通过射线拾取计算filament官方给出的转换方式filament实现坐标转换的QA1、View::pick()2、为什么filament的计算方式没有除以w分量?3、为什么别的资料上都是inverse(viewMatr…

idea开发Springboot出租车管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 出租车管理系统是一套完善的完整信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发), 系统具有完整的源代码和数据…

(vue3)create-vue 组合式API

优势: 更易维护:组合式api,更好的TS支持 之前是选项式api,现在是组合式,把同功能的api集合式管理 复用功能封装成一整个函数 更快的速度 更小的体积 更优的数据响应式:Proxy create-vue 新的脚手架工…

计算机竞赛 深度学习OCR中文识别 - opencv python

文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习OCR中文识别系统 ** 该项目较为新颖,适合作为竞赛课题方向,…

老卫带你学---leetcode刷题(124. 二叉树中的最大路径和)

124. 二叉树中的最大路径和 问题: 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总…

【数据结构】单链表的基本操作(节点建立、插入删除)

1. 单链表的基本操作 1.1. 链表的定义1.2. 链表的创建(初始化) 1.2.1. 不带头结点的链表1.2.2. 带头结点的链表 1.3. 链表的插入和删除 1.3.1. 按位序插入 1.3.1.1. 带头结点1.3.1.2. 不带头结点 1.3.2. 指定节点的后插操作1.3.3. 指定元素的前插操作1.3…

外汇天眼:外汇交易一周最佳外汇交易日!

外汇市场运行24小时,但并非每时每刻都适合交易。本文将为您介绍一周中最佳外汇交易日,以及哪些时间段最适合参与外汇交易。 首先,值得注意的是伦敦时段通常是外汇市场最繁忙的时段。然而,即便如此,一周中仍有特定的日…

debian无法使用reboot 等系统命令解决

重启debian的时候,报错没有此命令 然后查看环境配置文件,发现没有debian 安装后没有自动添加环境变量。 1.首先编辑配置文件 nano /etc/profile2.在文件末尾添加如下内容 export PATH$PATH:/sbin/3.保存退出 CTRL O // 保存 ENTER // 回车确认文…

脚手架开发流程详解

开发流程 创建npm项目创建脚手架入口文件,最上方添加 #!/usr/bin/env/ node配置package.json,添加bin属性编写脚手架代码将脚手架发布到npm 使用流程 安装脚手架 npm install -g your-own-cli使用脚手架 your-own-cli脚手架开发难点解析 分包&…

c语言 - 实现每隔1秒向文件中写入当前系统时间

实现思路 主要是通过库函数和结构体获取当前系统时间(年月日和时分秒)保存到变量里,然后通过格式化输出函数将当前系统时间输出到文件中去。 但是需要注意的是题目要求每隔 1 s对系统时间进行输出,所以需要加入 sleep()函数进行调…

AOP执行的流程

Spring AOP是通过动态代理实现的,它在运行时通过生成代理对象来拦截和增强目标方法的执行。 具体运行流程如下: 1. 定义切面:使用Spring的AOP注解(如Aspect)定义切面类,标识切面的切点和通知。 2. 创建目…

computed和methods有什么区别

面试题:computed和methods有什么区别 标准而浅显的回答 在使用时,computed当做属性使用,而methods则当做方法调用computed可以具有getter和setter,因此可以赋值,而methods不行computed无法接收多个参数,而m…

二、浏览器--事件循环(也叫事件环,也叫event loop)--任务队列(等待执行的任务(存放的定时器,http,事件等进程))--渲染三者的关系

引用B站视频,搜索标题:【事件循环】【前端】事件原理讲解,超级硬核,忍不住转载 本视频总结: 超级复杂的JS底层。事件循环和事件队列的关系。宏任务、微任务和raf回调这3个事件队列的关系。任务队列和执行栈的关系。d…

rust类型转换

类型转换 类型转换分为隐式类型转换和显式类型转换。 隐式类型转换是由编译器完成的,开发者并未参与,所有又称自动强制转换。 显式类型转换是由开发者指定的,就是一般意义上的类型转换。 一、显式转换 (一)as 1.原生…

数据结构与算法之链表: 基于链表实现js中的原型链原理与算法实现 (Typescript版)

常见数据类型的原型链指向 obj -> Object.prototype -> nullfunc -> Function.prototype -> Object.prototype -> nullarr -> Array.prototype -> Object.prototype -> nullobj是Object实例func是Function实例,也是Object实例arr是Array实…

配置OSPFv3基本功能 华为笔记

1.1 实验介绍 1.1.1 关于本实验 OSPF协议是为IP协议提供路由功能的路由协议。OSPFv2(OSPF版本2)是支持IPv4的路由协议,为了让OSPF协议支持IPv6,技术人员开发了OSPFv3(OSPF版本3)。 无论是OSPFv2还是OSPFv…

设计模式2、抽象工厂模式 Abstract Factory

解释说明:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 简言之,一个工厂可以提供创建多种相关产品的接口,而无需像工厂方法一样,为每一个产品都提供一个具体工厂 抽象工厂(Abstra…