当前位置: 首页 > news >正文

Spark_SQL-DataFrame数据写出以及读写数据库(以MySQl为例)

                  一、数据写出

        (1)SparkSQL统一API写出DataFrame数据

二、写出MySQL数据库


一、数据写出

        (1)SparkSQL统一API写出DataFrame数据

        统一API写法:

       常见源写出:

# cording:utf8from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, IntegerType, StringType
import pyspark.sql.functions as F
if __name__ == '__main__':spark = SparkSession.builder.\appName('write').\master('local[*]').\getOrCreate()sc = spark.sparkContext# 1.读取文件schema = StructType().add('user_id', StringType(), nullable=True).\add('movie_id', IntegerType(), nullable=True).\add('rank', IntegerType(), nullable=True).\add('ts', StringType(), nullable=True)df = spark.read.format('csv').\option('sep', '\t').\option('header', False).\option('encoding', 'utf-8').\schema(schema=schema).\load('../input/u.data')# write text 写出,只能写出一个列的数据,需要将df转换为单列dfdf.select(F.concat_ws('---', 'user_id', 'movie_id', 'rank', 'ts')).\write.\mode('overwrite').\format('text').\save('../output/sql/text')# write csvdf.write.mode('overwrite').\format('csv').\option('sep',';').\option('header', True).\save('../output/sql/csv')# write jsondf.write.mode('overwrite').\format('json').\save('../output/sql/json')# write parquetdf.write.mode('overwrite').\format('parquet').\save('../output/sql/parquet')

二、写出MySQL数据库

        API写法:

        注意:

        ①jdbc连接字符串中,建议使用useSSL=false 确保连接可以正常连接( 不使用SSL安全协议进行连接)

        ②jdbc连接字符串中,建议使用useUnicode=true 来确保传输中不出现乱码

        ③save()不要填参数,没有路径,是写出数据库

        ④dbtable属性:指定写出的表名

# cording:utf8from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, IntegerType, StringType
import pyspark.sql.functions as F
if __name__ == '__main__':spark = SparkSession.builder.\appName('write').\master('local[*]').\getOrCreate()sc = spark.sparkContext# 1.读取文件schema = StructType().add('user_id', StringType(), nullable=True).\add('movie_id', IntegerType(), nullable=True).\add('rank', IntegerType(), nullable=True).\add('ts', StringType(), nullable=True)df = spark.read.format('csv').\option('sep', '\t').\option('header', False).\option('encoding', 'utf-8').\schema(schema=schema).\load('../input/u.data')# 2.写出df到MySQL数据库df.write.mode('overwrite').\format('jdbc').\option('url', 'jdbc:mysql://pyspark01:3306/bigdata?useSSL=false&useUnicode=true&serverTimezone=GMT%2B8').\option('dbtable', 'movie_data').\option('user', 'root').\option('password', '123456').\save()# 读取   df2 = spark.read.format('jdbc'). \option('url', 'jdbc:mysql://pyspark01:3306/bigdata?useSSL=false&useUnicode=true&serverTimezone=GMT%2B8'). \option('dbtable', 'movie_data'). \option('user', 'root'). \option('password', '123456'). \load()# 查看读取结果df2.printSchema()df2.show()'''JDBC写出,会自动创建表的因为DataFrame中的有表结构信息,StructType记录的 各个字段的名称 类型 和是否运行为空'''

        保存结果:

        读取结果:

相关文章:

Spark_SQL-DataFrame数据写出以及读写数据库(以MySQl为例)

一、数据写出 (1)SparkSQL统一API写出DataFrame数据 二、写出MySQL数据库 一、数据写出 (1)SparkSQL统一API写出DataFrame数据 统一API写法: 常见源写出: # cording:utf8from pyspark.sql import SparkSes…...

Linux进程终止

文章目录 进程退出场景进程退出码strerrorerrno浅谈进程异常exit && _exit 进程退出场景 代码运行完毕,结果正确代码运行完毕,结果不正确代码异常 进程退出码 我们写的C/C的代码,main函数每次都需要返回0,而这个return…...

0036【Edabit ★☆☆☆☆☆】【让我加油】Let‘s Fuel Up!

0036【Edabit ★☆☆☆☆☆】【让我加油 】Let’s Fuel Up! control_flow language_fundamentals numbers Instructions A vehicle needs 10 times the amount of fuel than the distance it travels. However, it must always carry a minimum of 100 fuel before setting o…...

React 中常用的几种路由跳转方式

目录 一、push跳转 1、Link组件: 二、replace跳转 三、goBack跳转(回退) 四、goForward跳转(前进) 五、 go跳转(向前或向后跳转指定步数) 一、push跳转 1、Link组件: 可以在不刷新…...

C++内存管理:其七、标准库中的allocator

首先明确一点&#xff0c;绝大多数情况下&#xff0c;是标准库中的容器使用allocator。因为容器需要频繁的申请和释放内存。 一、容器使用allocator 典型的例子&#xff1a; vector<int , allocator<int>> a;但是为什么我们通常的定义vector变量的方法是&#x…...

【机器学习合集】人脸表情分类任务Pytorch实现TensorBoardX的使用 ->(个人学习记录笔记)

人脸表情分类任务 注意&#xff1a;整个项目来自阿里云天池&#xff0c;下面是开发人员的联系方式&#xff0c;本人仅作为学习记录&#xff01;&#xff01;&#xff01;该文章原因&#xff0c;学习该项目&#xff0c;完善注释内容&#xff0c;针对新版本的Pytorch进行部分代码…...

Maven - 国内 Maven 镜像仓库(加速包,冲冲冲~)

<?xml version"1.0" encoding"UTF-8" ?><!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding…...

【Solidity】智能合约案例——③版权保护合约

目录 一、合约源码分析&#xff1a; 二、合约整体流程&#xff1a; 1.部署合约&#xff1a; 2.添加实体&#xff1a; 3.查询实体 4.审核版权&#xff1a; 5.版权转让 一、合约源码分析&#xff1a; Copyright.sol&#xff1a;主合约&#xff0c;定义了版权局的实体&#xff…...

Cisco IOS XE Web UI 命令执行漏洞

Cisco IOS XE Web UI 命令执行漏洞 受影响版本 Cisco IOS XE全版本 漏洞描述 Cisco IOS XE Web UI 是一种基于GUI的嵌入式系统管理工具&#xff0c;能够提供系统配置、简化系统部署和可管理性以及增强用户体验。它带有默认映像&#xff0c;因此无需在系统上启用任何内容或安…...

qwen大模型,推理速度慢,单卡/双卡速度慢,flash-attention安装,解决方案

场景 阿里的通义千问qwen大模型&#xff0c;推理速度慢&#xff0c;单卡/双卡速度慢。 详细&#xff1a; 1、今日在使用qwen-14b的float16版本进行推理&#xff08;BF16/FP16) 1.1 在qwen-14b-int4也会有同样的现象 2、使用3090 24G显卡两张 3、模型加载的device是auto&#x…...

3.SpringSecurity基于数据库的认证与授权

文章目录 SpringSecurity基于数据库的认证与授权一、自定义用户信息UserDetails1.1 新建用户信息类UserDetails1.2 UserDetailsService 二、基于数据库的认证2.1 连接数据库2.2 获取用户信息2.2.1 获取用户实体类2.2.2 Mapper2.2.3 Service 2.3 认证2.3.1 实现UserDetails接口2…...

【软件测试】自动化测试selenium

目录 一、什么是自动化测试 二、Selenium介绍 1、Selenium是什么 2、Selenium的原理 三、了解Selenium的常用API 1、webDriver API 1.1、元素定位 1.1.1、CSS选择器 1.1.2、Xpath元素定位 1.1.3、面试题 1.2、操作测试对象 1.3、添加等待 1.4、打印信息 1.5、浏…...

​​​​​​​如何解决Google play开发者新注册账号,身份验证的地址证明问题?

我们知道&#xff0c;Google Play应用市场的发展速度惊人&#xff0c;但这两年&#xff0c;为了防止恶意软件的传播&#xff0c;谷歌要求开发者账号需要进行身份验证才能发布应用。 而今年越来越严格&#xff0c;不仅在提审时需要进行电话验证&#xff08;链接&#xff09;&am…...

Gin vs Beego: Golang的Web框架之争

前言 Golang作为一门高效且简洁的语言&#xff0c;已经在Web开发领域得到了广泛的应用。Gin和Beego是Golang中两个著名的Web框架&#xff0c;它们都提供了一系列强大的功能&#xff0c;帮助开发者构建高性能的Web应用。本文将对Gin和Beego进行全面的对比&#xff0c;帮助开发者…...

javascript IP地址正则表达式

/^(1[0-9]{2}|2[0-4][0-9]|25[0-5]|(\d){1,2})\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|(\d){1,2}|0)\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|(\d){1,2}|0)\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|(\d){1,2}|0)$/g.test(10.2.35.8) 注&#xff1a; 一定不要把表达式赋值给变量&#xff0c;直接…...

【Bash】记录一个长命令换行的BUG

假设现在我要在terminal执行如下命令跑模型&#xff1a; CUDA_VISIBLE_DEVICES6 python finetune.py -c configs/quantized/resnet32_cifar100_finetune.yml --model resnet32 --data-dir ~/datasets --apex-amp --initial-checkpoint /home/zwx/projects/hawq/resnet32.pth.t…...

【.net core】yisha框架imageupload组件多图上传修改

框架\wwwroot\lib\imageupload\1.0\js路径下imgup.js文件&#xff0c;参照旧版本代码和修改代码修改 (function ($) {"use strict";var deleteParent;var deleteDisplay none;var defaults {fileType: ["jpg", "png", "bmp", "…...

vscode markdown 使用技巧 -- 如何快速打出一个Tab 或多个空格

背景描述&#xff1a; 我在使用VSCode&#xff0c;这玩意很好用&#xff0c;但是&#xff0c;有一个缺点是&#xff0c;我想使用Tab来做一些对齐&#xff0c;但是我发现在VSCode中&#xff0c;无论是Tab还是多个空格&#xff0c;最终显示出来的都是一个空格 使用代码可以实现打…...

I/O 模型学习笔记【全面理解BIO/NIO/AIO】

文章目录 I/O 模型什么是 I/O 模型Java支持3种I/O模型BIO&#xff08;Blocking I/O&#xff09;NIO&#xff08;Non-blocking I/O&#xff09;AIO&#xff08;Asynchronous I/O&#xff09; BIO、NIO、AIO适用场景分析 java BIOJava BIO 基本介绍Java BIO 编程流程一个栗子实现…...

【Python学习笔记】字符编码

1. 字符串编码 Python3语言里面的字符串对象是unicode字符串&#xff0c;在内存中实际存储时&#xff0c;使用的是 UTF16 编码。但通常不会将UTF16编码的内容写到磁盘或者在网络进行传输&#xff0c; 因为utf16编码比较浪费空间。特别是如果文字信息基本都是英文符号的情况下&…...

从3大维度突破OCR效率瓶颈:5类场景的实战解决方案

从3大维度突破OCR效率瓶颈&#xff1a;5类场景的实战解决方案 【免费下载链接】Umi-OCR_plugins Umi-OCR 插件库 项目地址: https://gitcode.com/gh_mirrors/um/Umi-OCR_plugins 在数字化办公与学习中&#xff0c;OCR&#xff08;光学字符识别&#xff09;技术已成为信息…...

如何突破极域电子教室限制?3个高效学习工具推荐

如何突破极域电子教室限制&#xff1f;3个高效学习工具推荐 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 在数字化教学环境中&#xff0c;极域电子教室作为常见的教学管理软件&…...

导师推荐!盘点2026年最受欢迎的AI论文工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年AI论文工具全面升级&#xff0c;实测提速超50%&#xff0c;覆盖选题、文献分析、内容生成、降重润色、格式排版等全流程场景&#xff0c;真正帮你高效搞定论文。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;…...

三步掌握MidScene:AI浏览器自动化的零代码实战指南

三步掌握MidScene&#xff1a;AI浏览器自动化的零代码实战指南 【免费下载链接】midscene Let AI be your browser operator. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene MidScene是一款革命性的AI驱动浏览器自动化工具&#xff0c;让您能够通过自然语…...

别再乱用String拼接了!揭秘StringBuilder和StringBuffer的正确使用场景

Java字符串拼接性能优化&#xff1a;StringBuilder与StringBuffer深度解析 在Java开发中&#xff0c;字符串操作是最基础也最频繁的任务之一。很多开发者习惯性地使用""进行字符串拼接&#xff0c;却不知道这背后隐藏着巨大的性能陷阱。本文将带你深入理解String、St…...

超实用的三角高程观测记录及平差计算表格程序

三角高程观测记录及平差计算表格程序:通过给出的高程点的坐标&#xff08;边长&#xff09;和高程&#xff0c;只要填写点号&#xff0c;就能实现自动反向计算测量过程&#xff0c;并自动生成四个测回的观测记录。 非常实用方便&#xff0c;表格界面简洁&#xff0c;通用&#…...

任务式智能客服工作流架构设计与性能优化实战

最近在重构公司的智能客服系统&#xff0c;原来的系统在高并发时经常卡顿&#xff0c;用户排队时间长得让人抓狂。经过一番折腾&#xff0c;我们设计了一套基于事件驱动的任务式工作流&#xff0c;效果拔群&#xff0c;吞吐量直接翻了好几倍。今天就来聊聊这套架构的设计思路和…...

PlugY完整指南:暗黑破坏神2终极单机优化解决方案

PlugY完整指南&#xff1a;暗黑破坏神2终极单机优化解决方案 【免费下载链接】PlugY PlugY, The Survival Kit - Plug-in for Diablo II Lord of Destruction 项目地址: https://gitcode.com/gh_mirrors/pl/PlugY PlugY是《暗黑破坏神2&#xff1a;毁灭之王》最强大的单…...

CentOS 8下openLDAP服务器搭建避坑指南:从第三方仓库到phpLDAPadmin配置

CentOS 8企业级openLDAP部署实战&#xff1a;从仓库选择到安全加固全解析 在当今企业IT架构中&#xff0c;目录服务作为身份认证和资源管理的核心组件&#xff0c;其重要性不言而喻。而openLDAP作为开源目录服务的标杆解决方案&#xff0c;凭借其轻量高效、跨平台兼容的特性&am…...

探索双闭环直流调速系统的仿真之旅:从疑惑到理解

simulink双闭环直流调速系统matlab仿真在学习直流调速系统的过程中&#xff0c;双闭环控制总让我感到有些困惑。PID控制器的参数如何选择&#xff1f;电流环和速度环之间到底有什么联系&#xff1f;带着这些问题&#xff0c;我决定通过Simulink仿真来寻找答案。 一、搭建仿真模…...