Spark SQL读写CSV文件案例

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 数据准备

    我们要把本地的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>
  • 春江花朝秋月夜,往往取酒还独倾
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值