Spark SQL读写CSV文件案例

使用Spark将DataFrame或Dataset写入CSV或TSV文件 使用Spark将DataFrame或Dataset写入CSV或TSV文件Spark是一个强大的分布式计算框架,提供了许多用于数据处理和分析的功能。在Spark中,我们可以使用DataFrame和Dataset API来处理结构化数据,并将其写入各种文件格式中,包括CSV和TSV格式。在本文中,我将介绍如何使用Spark将DataFrame或Dataset写入CSV或TSV文件。我将提供一些示例代码,以帮助您更好地理解这个过程。 阅读详情
AI摘要

本文介绍如何使用Apache Spark读取CSV文件,并对数据进行查询及输出处理。通过Scala代码实现数据加载、选择特定列并导出结果。

  • 数据准备

    我们要把本地的1.csv文件读到Spark中
    在这里插入图片描述

  • CsvDemo.scala

    object CsvDemo {
      def main(args: Array[String]): Unit = {
        //1.创建Spark对象
        val spark: SparkSession = SparkSession.builder()
          .appName("data")
          .master("local[*]")
          .getOrCreate()
        spark.sparkContext.setLogLevel("warn")
    
        //2.读取CSV数据源
        val csvDf: DataFrame = spark.read
          .option("header", "true") //表示第一行是列的名称
          .option("mode", "PERMISSIVE") //写文件时模式指定为覆盖写
          .option("inferSchema", "true") //读取文件时是否自动判断列类型
          .csv("/Users/xiaoyueyue/csdn/data/1.csv") //本地文件路径
    
        //3.DataFrame注册成表
        csvDf.createTempView("csv_data")
    
        //4.查询部分字段信息
        spark.sql("select xingming,zhuanye from csv_data").show(10)
      }
    }
    
  • 查询结果截图
    在这里插入图片描述

  • 原始数据截图
    在这里插入图片描述

  • 将查询结果写出成csv文件
    spark.sql("select xingming,zhuanye from csv_data").write.csv("/Users/xiaoyueyue/Desktop/result")

/**
 * 完整代码
 */
object CsvDemo {
  def main(args: Array[String]): Unit = {
    //1.创建Spark对象
    val spark: SparkSession = SparkSession.builder()
      .appName("data")
      .master("local[*]")
      .getOrCreate()
    spark.sparkContext.setLogLevel("warn")

    //2.读取CSV数据源
    val csvDf: DataFrame = spark.read
      .option("header", "true") //表示第一行是列的名称
      .option("mode", "PERMISSIVE") //写文件时模式指定为覆盖写
      .option("inferSchema", "true") //读取文件时是否自动判断列类型
      .csv("/Users/xiaoyueyue/csdn/data/1.csv") //本地文件路径

    //3.DataFrame注册成表
    csvDf.createTempView("csv_data")

    //4.查询部分字段信息
    spark.sql("select xingming,zhuanye from csv_data").write.csv("/Users/xiaoyueyue/Desktop/result")

    //5.关闭
    spark.stop()
  }

}
  • POM文件(注意版本兼容问题)
    <properties>
        <spark.version>2.2.1</spark.version>
        <scala.version>2.11</scala.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-compiler</artifactId>
            <version>2.11.8</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>${spark.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.11</artifactId>
            <version>${spark.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming_2.11</artifactId>
            <version>${spark.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_2.11</artifactId>
            <version>${spark.version}</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

    </dependencies>

    <build>
        <sourceDirectory>src/main/scala</sourceDirectory>
        <testSourceDirectory>src/test/scala</testSourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>utf-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • 春江花朝秋月夜,往往取酒还独倾
spark解析csv文件,存入数据库 csv文件用java太麻烦了,spark很简单,简单到怀疑人生 立即下载

相关推荐

手把手教你构建轻量级CLIP模型:从理论到实践

本文手把手教你从零构建一个轻量级CLIP模型,深入解析其核心原理——对比学习,并提供完整的代码实践。通过精简的模型架构、数据准备和训练循环实现,帮助读者彻底理解多模态模型如何让图像与文本在共享空间中对齐,为学习更复杂的AI模型打下坚实基础。

weixin_29100927的博客 326

spark读写csv文件

如果是spark1.6.0请添加maven: &lt;dependency&gt; &lt;groupId&gt;com.databricks&lt;/groupId&gt; &lt;artifactId&gt;spark-csv_2.10&lt;/artifactId&gt; &lt;version&gt;1....

lhxsir的博客 1万+

FlexibleButton嵌入式按键处理方案设计与实现

嵌入式系统中的按键处理是基础且关键的人机交互技术,其核心原理是通过GPIO电平检测结合状态机实现事件识别。FlexibleButton作为轻量级C语言按键处理库,采用硬件抽象层设计实现驱动解耦,支持单击、双击、长按等丰富事件类型。该方案通过集中式扫描策略和内置消抖算法,在RT-Thread和裸机环境中均能稳定运行,特别适合需要组合按键检测和低功耗优化的物联网设备。典型应用场景包括智能家居控制面板和工业HMI界面开发,其中硬件解耦架构和事件驱动模型显著提升代码复用率。

weixin_35757191的博客 402

使用Spark读写CSV格式文件

CSV格式的文件也称为逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号。在本文中的CSV格式的数据就不是简单的逗号分割的),其文件以纯文本形式存表格数据(数字和文本)。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段

网络空间发展与战略研究 4万+

ANSYS Workbench实战:用网格自适应搞定超弹性橡胶大变形仿真(附避坑命令流)

本文深入探讨了ANSYS Workbench中超弹性橡胶大变形仿真的网格自适应技术,重点解析了混合U-P单元的应用、非线性自适应网格的实战技巧及材料模型选择的注意事项。通过具体案例和命令流示例,帮助工程师有效解决橡胶仿真中的收敛问题和网格畸变挑战,提升仿真精度和效率。

weixin_42666036的博客 303

cefshap(C#)定义浏览器的右键菜单

菜单效果:复制(自带),搜索文本,打开链接,复制链接,刷新,检查,关于 public class MenuHandler : IContextMenuHandler { //public event Action<string> PopupRequest; void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrows

无线智能模块 可视DIY智能专家 1706

Spark-sql 通过case class、class和StructType的方式创建DataFrame

1.通过case class 的方式创建DataFrame laozhao,18,9999.99 laoduan,30,99.99 xuance,28,99.99 yeqing,25,99.0 dezhi,24,99.9 libai,88,50.0 banzang,29,50.6 import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame,.

m0_46538284的博客 3781

手把手教你YOLOv8/YOLOv11分割训练自己数据集和推理,并教你使用Labelme工具标注数据(附分割网络结构图)

YOLOv8-seg 和 YOLOv11-seg 都是一种高效实例分割算法,实例分割模型的输出是一组勾勒出图像中每个物体的遮罩或轮廓,以及每个物体的类标签和置信度分数。当你不仅需要知道物体在图像中的位置,还需要知道它们的具体形状时,实例分割就非常有用了,功能非常强大,可以应对各种视觉任务。 YOLOv11-seg 则在 YOLOv8-seg 基础上进一步魔改了模型架构,相对分割速度可能更快,其他指标性能有待测试。实例分割可以用于自动驾驶、医疗图像处理、智能农业监控等领域。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 4478

Spark:写入CSV文件

几周前,我写了我是如何使用Spark探索芝加哥市犯罪数据集的 ,并得出了每起犯罪的数量,我想将其写入CSV文件。 Spark提供了一个saveAsTextFile函数,该函数允许我们保存RDD的代码,因此我将代码重构为以下格式,以允许我使用它: import au.com.bytecode.opencsv.CSVParser import org.apache.spark.rdd.RD...

3912

通信算法之264: DJI O2 协议物理层逆向工程解析

对于 DroneID,标志之间的间隙由循环前缀 (CP) 填充:每个标志末尾的副本附加在相应标志的开头。有了关于确切标志开始的信息,可以使用 FFT 将标志转移到频域 - 来自时域的 1024 个样本导致频域中的 1024 个子载波。使用比特流的解扰和涡轮解码,并将生成的数据映射到如上的DroneID 结构,通过逆向工程在无人机的固件中找到了它。注意到一些无人机(Mavic 2 和更早的 OcuSync 无人机)不发送第一个标志(标志 1),这导致更短的帧持续时间为 576 µs。//产品型号数字代号。

leegang12的专栏 3948

如何在Dify中安装运行pandas、numpy库(离线、在线均支持,可提供远程指导)

pandas和numpy这两个库是数据科学和数据分析中经常使用的工具包,原生的Dify无法直接使用这两个库,需要手动安装后才可以使用。本文将介绍如何在Dify中安装pandas和numpy,并在代码执行节点中运行使用pandas和numpy。Dify的代码执行节点中的python逻辑,实际是运行在Dify沙盒中的,因此我们在沙盒中安装pandas和numpy就可以了。如果您有在Dify中添加pandas、numpy的应用需求,欢迎关注作者进行交流。

litlit023的专栏 5635

spark Sql 读写CSV文件

people.json文件内容 {"name":"Michael", "age":29} {"name":"Andy", "age":30} {"name":"Justin", "age":19} 测试代码 import org.apache.spark.sql.*; import org.apache.spark.sql.types.DataTypes; import org.apa...

小哇 2214

2026最新贝壳二手房爬虫实战:突破极验5.0滑块验证码,完整房源数据采集方案

本文详细介绍了2026年贝壳找房爬虫技术方案,重点突破其极验5.0滑块验证码等反爬机制。文章首先解析了贝壳六大核心反爬模块,包括AI驱动的验证码、设备指纹绑定和TLS指纹识别等。针对最难破解的滑块验证码,提出了基于YOLOv11深度学习模型的缺口检测方案,准确率达99.5%,并结合人类行为轨迹模拟实现98%以上的成功率。最后设计了分布式爬虫架构,包含任务调度、代理池、验证码服务和数据清洗等模块,为大规模采集贝壳真实房源数据提供了完整解决方案。该方案在复杂反爬环境下仍保持高效稳定,具有重要的商业和研究价值。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2058

Spark-SQL 读写csv文件

name,age,fv_value libai,18,9999.99 xuance,30,99.99 diaochan,28,99.99 libai,18,9999.99 xuance,30,99.99 diaochan,28,99.99 读csv文件 import org.apache.spark.sql.{DataFrame, SparkSession} object CreateDataFrameFromCsv { def main(args: Array[Strin..

m0_46538284的博客 2426

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SPARK-SQL 读取外部数据源 csv文件的读写

准备person.json文件 {"name":"Michael", "age":29} {"name":"Andy", "age":30} {"name":"Justin", "age":19} csv文件读写操作示例 import org.apache.spark.sql.*; import org.apache.spark.sql.types.DataTypes; import org.apache.spark.sql.types.StructField; import org.apache

小哇 864

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

在EMR上执行 java spark sql 读写 s3 csv文件,存储RDS mysql

java写了一段从AWS s3读取csv文件,并使用spark sql处理后结果保存到mysql数据库,并写入到s3上csv文件的代码如下: package org.example.JavaDemo; import org.apache.spark.SparkConf; import org.apache.spark.SparkContext; import org.apache.spark...

Ace的专栏 981

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

pythonspark 写入csv_使用Spark读写CSV格式文件(转)

CSV格式的文件也称为逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号。在本文中的CSV格式的数据就不是简单的逗号分割的),其文件以纯文本形式存表格数据(数字和文本)。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段...

weixin_39951419的博客 1228

Spark 读取各种文件获得df并写入

package com.spark.sql import org.apache import org.apache.spark.sql.catalyst.encoders.ExpressionEncoder import org.apache.spark.sql.types.{StringType, StructField, StructType} import org.apache.spark.sql.{Encoder, Row, SaveMode, SparkSession} object DataS

star5610的博客 1550

Spark 读写CSV的常用配置项

Spark 2.0 之前,Spark SQL 读写 CSV 格式文件,需要 Databricks 官方提供的 spark-csv 库。在 Spark 2.0 之后,Spark SQL 原生支持读写 CSV 格式文件。 测试带标题的文件如下: id|name|age 1| darren |18 2|anne|18 3|"test"|18 4|'...

chenghui2006的专栏 2087

Spark1.x和2.x如何读取和写入csv文件

看很多资料,很少有讲怎么去操作读写csv文件的,我也查了一些。很多博客都是很老的方法,还有好多转来转去的,复制粘贴都不能看。下面我在这里归纳一下,以免以后用到时再费时间去查 通过sc.textFile val input = sc.textFile(&amp;amp;quot;test.csv&amp;amp;quot;) val result = input.map { line =&amp;amp;amp;gt; val reader = new CSVRea..

lzw2016的博客 7098

pythonspark 写入csv_使用Spark读写CSV格式文件

CSV格式的文件也称为逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号。在本文中的CSV格式的数据就不是简单的逗号分割的),其文件以纯文本形式存表格数据(数字和文本)。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段...

weixin_39557402的博客 1175

spark-SQL的数据源的读写--jdbc--parquet--json--CSV

关于spark-sql的读写文件的方法,数据源分为这几类:1.jdbc连接mysql的文件的读写//从mysql中读取数据,需要指定表,驱动类。 val url = "jdbc:mysql://localhost:3306/bbs?characterEncoding=utf-8" val tname = "t_acc_Ip" val conn = new Propertie...

自由幻想的博客 784

Spark-trap

spark使用的技巧

DCHAO的博客 442

Spark-03: Spark SQL 基础编程

Spark SQL是Apache Spark的一个模块,用于处理结构化数据。它提供了两种编程抽象:DataFrame和DataSet,并作为分布式SQL查询引擎。

m0_37559973的博客 900

18 ,sql 测试 : 1.5G 的文件计算,读写文件 ( csv 带表头 ) ,时长测试 ( 毫秒 ) ,统计总条数,spark on yarn 两种模式对比

### 1 ,商品表 : goods.csv ```csv 款色号,款号,大类,中类,小类,性别,年季,商品年份,商品季节,颜色,上市月份,上市温度,订货评分,运营评分,波段,售价,系列,版型 BAXL3399A04,BAXL3399,内搭,衬衫,长袖正统衬衫,,2016秋,2016,秋,A04,,,,,2016秋三,799,经典商务,合身版 NWLJ4530L01,NWLJ4530,配件,皮具,福袋,,2015秋,2015,秋,L01,,,,,,999,经典商务,无 FTXJ1109J03,FTXJ110

孙砚秋的博客 589
上一篇: Spark SQL连接Hive失败 org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
下一篇: Hive 删除 数据库
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值