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

df.write.csv

# 将 DataFrame 写入 CSV 文件
# 拆分 ArrayType 列
df_exploded = df.withColumn("interests", explode("interests"))
print("\nExploded DataFrame:")
df_exploded.show(truncate=False)# 写入 CSV 文件
df_exploded.write.csv("output_data")# 从 CSV 文件读取数据并创建 DataFrame
read_df = spark.read.csv("output_data", header=False, inferSchema=True)
print("\nRead DataFrame from CSV:")
read_df.show(truncate=False)
Exploded DataFrame:
+-----+---+------+---------+-----------+----------+-------------------+--------+
|name |age|weight|interests|has_license|birthday  |last_checkup       |balance |
+-----+---+------+---------+-----------+----------+-------------------+--------+
|Alice|34 |65.5  |reading  |true       |1990-01-01|2023-01-01 10:00:00|12345.67|
|Alice|34 |65.5  |swimming |true       |1990-01-01|2023-01-01 10:00:00|12345.67|
|Bob  |45 |80.2  |gaming   |false      |1979-05-15|2023-05-15 12:00:00|54321.01|
|Bob  |45 |80.2  |traveling|false      |1979-05-15|2023-05-15 12:00:00|54321.01|
|Cathy|29 |55.0  |cooking  |true       |1995-08-20|2023-08-20 14:00:00|7890.12 |
|Cathy|29 |55.0  |painting |true       |1995-08-20|2023-08-20 14:00:00|7890.12 |
+-----+---+------+---------+-----------+----------+-------------------+--------+Read DataFrame from CSV:
+-----+---+----+---------+-----+----------+-------------------+--------+
|_c0  |_c1|_c2 |_c3      |_c4  |_c5       |_c6                |_c7     |
+-----+---+----+---------+-----+----------+-------------------+--------+
|Alice|34 |65.5|reading  |true |1990-01-01|2023-01-01 10:00:00|12345.67|
|Alice|34 |65.5|swimming |true |1990-01-01|2023-01-01 10:00:00|12345.67|
|Bob  |45 |80.2|gaming   |false|1979-05-15|2023-05-15 12:00:00|54321.01|
|Bob  |45 |80.2|traveling|false|1979-05-15|2023-05-15 12:00:00|54321.01|
|Cathy|29 |55.0|cooking  |true |1995-08-20|2023-08-20 14:00:00|7890.12 |
|Cathy|29 |55.0|painting |true |1995-08-20|2023-08-20 14:00:00|7890.12 |
+-----+---+----+---------+-----+----------+-------------------+--------+

 output_data是一个文件夹,如下:

根据文件类型,output_data 文件夹中的内容可以分为以下几类:

  1. 成功标记文件

    • .SUCCESS:这是一个特殊的文件,用于标记数据写入操作已经成功完成。在分布式文件系统(如 HDFS)中,这个文件的存在表示数据写入操作已经成功完成
    • .SUCCESS.crc:这是一个校验和文件,用于验证 .SUCCESS 文件的完整性。在分布式文件系统中,校验和文件用于确保数据的完整性
  2. 数据文件

    • .part-00000-b9d20695-e9a6-4e1e-9012-a4708a9ed543-c000.csv:这是一个数据文件,包含了写入的数据。文件名中的 .part-00000 表示这是第一个数据分片,后面的数字和字母是随机生成的,用于唯一标识这个数据分片。
    • .part-00002-b9d20695-e9a6-4e1e-9012-a4708a9ed543-c000.csv:这是一个数据文件,包含了写入的数据。文件名中的 .part-00002 表示这是第二个数据分片
    • .part-00005-b9d20695-e9a6-4e1e-9012-a4708a9ed543-c000.csv:这是一个数据文件,包含了写入的数据。文件名中的 .part-00005 表示这是第五个数据分片
    • .part-00007-b9d20695-e9a6-4e1e-9012-a4708a9ed543-c000.csv:这是一个数据文件,包含了写入的数据。文件名中的 .part-00007 表示这是第七个数据分片
  3. 校验和文件

    • .part-00000-b9d20695-e9a6-4e1e-9012-a4708a9ed543-c000.csv.crc:这是一个校验和文件,对应于 .part-00000-b9d20695-e9a6-4e1e-9012-a4708a9ed543-c000.csv 文件。用于验证数据的完整性。
    • .part-00002-b9d20695-e9a6-4e1e-9012-a4708a9ed543-c000.csv.crc:这是一个校验和文件,对应于 .part-00002-b9d20695-e9a6-4e1e-9012-a4708a9ed543-c000.csv 文件。
    • .part-00005-b9d20695-e9a6-4e1e-9012-a4708a9ed543-c000.csv.crc:这是一个校验和文件,对应于 .part-00005-b9d20695-e9a6-4e1e-9012-a4708a9ed543-c000.csv 文件。
    • .part-00007-b9d20695-e9a6-4e1e-9012-a4708a9ed543-c000.csv.crc:这是一个校验和文件,对应于 .part-00007-b9d20695-e9a6-4e1e-9012-a4708a9ed543-c000.csv 文件。

这些文件通常是在使用分布式文件系统(如 HDFS)时生成的,用于存储和管理大数据集。每个数据分片(.part-XXXXX.csv 文件)包含了数据的一部分,而对应的校验和文件(.part-XXXXX.csv.crc 文件)用于验证数据的完整性。.SUCCESS 文件和 .SUCCESS.crc 文件则用于标记数据写入操作的完成状态。

第二个分片

Alice,34,65.5,reading,true,1990-01-01,2023-01-01T10:00:00.000+08:00,12345.67
Alice,34,65.5,swimming,true,1990-01-01,2023-01-01T10:00:00.000+08:00,12345.67

第五个分片

Bob,45,80.2,gaming,false,1979-05-15,2023-05-15T12:00:00.000+08:00,54321.01
Bob,45,80.2,traveling,false,1979-05-15,2023-05-15T12:00:00.000+08:00,54321.01

第七个分片

Cathy,29,55.0,cooking,true,1995-08-20,2023-08-20T14:00:00.000+08:00,7890.12
Cathy,29,55.0,painting,true,1995-08-20,2023-08-20T14:00:00.000+08:00,7890.12

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • RK3399 android7.1 话柄电话功能
  • Datawhale X 李宏毅苹果书 AI夏令营 Task3 深度学习详解 -2 机器学习框架攻略
  • 探索 Logrus 日志框架:Go 语言的强大日志工具
  • 【WPS Excel】复制表格时,提示“图片太大,超过部份将被截去“ 问题
  • 提高开发效率的实用工具库VueUse
  • OPenCV结构分析与形状描述符(4)计算一个旋转矩形的四个顶点的函数boxPoints()的使用
  • 实时图像编辑大革新!Adobe发布TurboEdit:可以通过文本来编辑图像,编辑时间<0.5秒!
  • 11.2.软件系统分析与设计-数据库分析与设计
  • C语言-数据结构 无向图普里姆Prim算法(邻接矩阵存储)
  • 可交互、会学习、自成长机器人——李德毅院士
  • 【Linux】易忘操作集合
  • 本地如何调百度地图 地图 map baidu-map 百度地图经纬度
  • 蔚来汽车-测开日常实习-部分手撕代码题
  • SAP 批量扩充物料库存地点简介
  • NCU-机器学习-作业1:基于KNN的IRIS分类
  • [deviceone开发]-do_Webview的基本示例
  • 《Java编程思想》读书笔记-对象导论
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • co模块的前端实现
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • MaxCompute访问TableStore(OTS) 数据
  • Python进阶细节
  • underscore源码剖析之整体架构
  • 不上全站https的网站你们就等着被恶心死吧
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 讲清楚之javascript作用域
  • 前端临床手札——文件上传
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 自定义函数
  • 带你开发类似Pokemon Go的AR游戏
  • #android不同版本废弃api,新api。
  • (007)XHTML文档之标题——h1~h6
  • (C++17) optional的使用
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (十一)图像的罗伯特梯度锐化
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .Mobi域名介绍
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .net mvc部分视图
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @ComponentScan比较
  • @Transactional 竟也能解决分布式事务?
  • []error LNK2001: unresolved external symbol _m
  • []新浪博客如何插入代码(其他博客应该也可以)