Spark高级用法-数据源的读取与写入

news2024/11/25 21:41:52

目录

数据读取

数据写入

总结


数据读取

  • 读文件

    • read.json

    • read.csv

      • csv文件有两个部分构成 头部数据,也就是字段数据,行数数据

    • read.orc

  • 读数据库

    • read.jdbc(jdbc连接地址,table='表名',properties={'user'=用户名,'password'=密码,'driver'='驱动信息'})

缺少连接驱动的错误

拷贝连接驱动包

# 将MySQL驱动包放入/export/server/spark/jars/目录下

 cp /export/server/hive/lib/mysql-connector-java-5.1.32.jar /export/server/spark/jars/

数据库创建测试数据

create database itcast charset=utf8;

create table itcast.tb_user(
    id int,
    name varchar(20),
    age int,
    gender varchar(20)
);

insert into  itcast.tb_user values (1,'张三',20,'男');

pyspark读取数据库数据

from pyspark.sql import SparkSession
ss = SparkSession.builder.getOrCreate()

# 获取外部
df = ss.read.text("hdfs://node1:8020/data/students.txt")
df.show()

# 获取外部数据库数据 采用jdbc方式读取,只要是支持jdbc连接的的数据库都可读
# url参数1  jdbc的连接地址
# table 指定连接的表
# properties 属性参数,指定连接的账户密码及驱动信息
df2 = ss.read.jdbc(
    url='jdbc:mysql://192.168.88.100:3306/itcast',table='tb_user',
    properties={'user':'root','password':'123456','driver':'com.mysql.jdbc.Driver'}
)
df2.show()

 

数据写入

  • 因为数据是在df中存储,所以使用dataframe进行数据写入
    • 使用dtaframe的的write方法
  • 写入文件有个模式,覆盖和追加两种方式,用mode参数指定
    • 覆盖 overwrite
    • 追加 oppend

  • 写入文件
    • write.json
    • write.csv
    • write.orc
  • 写入数据库
    • write.jdbc(jdbc连接地址,table='表名',properties={'user'=用户名,'password'=密码,'driver'='驱动信息'},mode='写入方式')

数据库创建表

 pyspark写入数据库数据

# 数据写入
from pyspark.sql import SparkSession,Row
ss = SparkSession.builder.getOrCreate()

df = ss.createDataFrame([
    Row(id = 1,name = '张三',age = 20),
    Row(id = 2,name = '李松',age = 20),
    Row(id = 3,name = '荔枝',age = 20)
],
    schema = 'id int,name string,age int'
)

# 将df数据写入hdfs中
df.write.json('hdfs://node1:8020/data/data_json',mode='overwrite')

# 写入数据库
df.write.jdbc('jdbc:mysql://192.168.88.100:3306/itcast?characterEncoding=utf8',table='tb_stu',mode='overwrite',
              properties={'user':'root','password':'123456','driver':'com.mysql.jdbc.Driver'})

验证hdfs是否写入数据

验证数据库是否传入数据

总结

使用read和write实现数据导入导出

读取mysql数据库的原始数据表

df = ss.read.jdbc()

在将读取到的数据导入数仓中

df.write.orc(hdfs://node1:8020/ods/tb_user

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

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

相关文章

机器学习基础概念(3)

小小考一下大家前两节的内容(坏笑) 我们如何评判一个机器学习模型的性能呢? 通常是判断它的泛化能力(对于未知数据的处理能力) 那么对于泛化能力是否有一个标准,比如在未知的1万个数据中,泛化能力 模型一90% >…

【分布式事务-02】分布式事务seata的安装下载与环境搭建

redis系列整体栏目 内容链接地址【一】分布式事务之2pc两阶段提交https://zhenghuisheng.blog.csdn.net/article/details/142406325【一】分布式事务seata的安装下载与环境搭建https://zhenghuisheng.blog.csdn.net/article/details/142893117 分布式事务seata的安装下载与环境…

java服务器技术

1. Java EE(Java Enterprise Edition) Java EE是一套为企业级应用提供的完整解决方案,它包括了Java Servlet、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)、JPA(Java Persist…

【风力发电】基于模糊逻辑控制的风电系统MPPT

摘要 本文基于模糊逻辑控制 (Fuzzy Logic Control, FLC) 实现了风力发电系统的最大功率点追踪 (MPPT)。FLC 由于其不依赖于精确数学模型的特点,能够有效应对风速变化导致的非线性和不确定性问题。通过对风速和功率的模糊化处理,该方法提高了风电系统的功…

ros1:使用C++编写ros程序,获取IMU数据,使用gazebo仿真

cd catkin_ws/src/catkin_create_pkg imu_pkg roscpp rospy sensor_msgs在src目录下创建,imu_node.cpp #include "ros/ros.h" #include "sensor_msgs/Imu.h" #include "tf/tf.h"void IMUCallback(sensor_msgs::Imu msg){if(msg.orien…

深兰科技|“武汉市AI心理热线医工交叉研发合作基地”正式揭牌

2024年10月10日是第33个世界精神卫生日,以“共建共治共享,同心健心安心“为主题的武汉市2024年世界精神卫生日主题活动暨第三届武汉青年心理情景剧展演闭幕式,在武汉隆重举行。期间,还举行了武汉市精神卫生中心与深兰科技(武汉)公…

Video-LLaMA部署

Video-LLaMA: An Instruction-tuned Audio-Visual Language Model for Video Understanding

计组_输入输出系统

2024.08.05:计算机组成原理输入输出学习笔记 第25节 输入输出系统 5.1 IO基本职能5.2 IO接口的通用结构5.3 IO数据传送控制方式5.3.1 程序直接控制(程序查询控制)(1)独占查询(2)定时查询 5.3.2 …

衡石分析平台---分析人员手册

分析人员是 HENGSHI SENSE 系统最主要的用户。在企业内部,他们应该是了解相关业务,需要在纷繁复杂的数据中发现数据规律的人。 从岗位上来说,他们可能来自运营部门,需要从日常运营数据中发现用户的使用规律;可能来自销…

【element-tiptap】如何引进系统中的字体?

源码地址: https://github.com/Leecason/element-tiptap 源码中给出的字体如下 可以看到,咱们日常需要的黑体、微软雅黑等都没有,所以这篇文章来探索一下怎么加字体。 另外呢,肯定有小伙伴发现,这个按钮点击的时候&am…

ssm资产管理信息系统+vue

系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码请私聊我 需要定制请私聊 目录 摘要 I Abstract II 1 绪论 - 1 - 1.1 研究背景与意义 - 1 - 1.1.1 研究背景 - 1 - 1.1.2 研究意义 …

jQuery——区别onload和ready

区别:window.onload 与 $(document). ready() window.onload 包括页面的图片加载完后才会回调(晚)只能有一个监听回调 $(document). ready() 等同…

echarts图例右侧竖向排列

实操链接戳这里哈 left代表图例在水平放置的位置,有left、center、right top代表图例在垂直方向的位置,有top、middle、bottom width是最主要的,当设置的宽度比较小时,才会迫使图例换行,从而形成竖直排列的现像。 lege…

MySQL:小练习

安装MySQL并且创建库和表 一, windows采用zip安装MySQL1. 卸载已有的MySQL2. 下载zip格式3. 解压缩4. 配置环境变量5. 创建配置文件6. 初始化mysql服务 二, 新建产品库mydb6_product,新建三张表 一, windows采用zip安装MySQL 1. …

【conda】创建、激活、删除虚拟环境

前言一、创建虚拟环境二、删除虚拟环境总结 前言 主要是记录一下步骤 一、创建虚拟环境 地址栏输入cmd,唤起命令符栏目,就可以在指定目录下创建虚拟环境了。 这样方便日后在pycharm直接配置虚拟环境。 conda create -n yolo5-lite python3.9 -y简单来说…

书店仓库管理系统 (论文+源码)-kaic

摘 要 仓库是储存货物的核心,是现代社会物质生产的必要条件。为了保障货物的 质量和准备货物进入市场的工作,一个良好的仓库布局环境尤为重要。例如书店仓库管理中的功能分区不够清晰、书本摆放混乱、通道设计不合理等。因此,我们需要对这些…

3D医学影像开发入门<二>:VS2019+Qt5.15.2+VTK9.3.1编译及环境配置

VTK(Visualization Toolkit)是一个开源的、跨平台的三维可视化开发库,用于处理和可视化三维数据。它提供了一系列算法和工具,用于创建、操作和渲染复杂的三维图形,并支持多种数据表示方式,包括点、线、面、…

传值与传址

目录 前言1.基础2.实际计算 前言 这是在软考中软件设计师有关的考点,关于程序设计基础——传值与传址 1.基础 传值和传址是两种不同的参数传递方式。 传值(传递值)是指将参数的副本传递给函数或方法。在函数或方法中对参数的任何修改不会影…

WebGL 入门学习

1. WebGL是什么? WebGL(Web Graphics Library)是一种JavaScript API,它允许你在不需要安装任何额外插件的情况下,直接在浏览器中渲染高性能的2D和3D图形。WebGL利用了用户的图形处理单元(GPU)来…

竹壳天气时钟(二)第二阶段任务已完成

一、简介 准备用基于esp8266的nodemcu开发板做一个天气时钟。 一步一步记录代码编写过程。 竹壳天气时钟 Bamboo shell weather clock 使用基于esp8266的NodeMCU制作。 计划用竹子做最后成品的外壳,所以才有了这个名称。 第一阶段任务: 1.开启混合模式&…