Spark---读取csv、json文件

CSV文件

package file

import org.apache.spark.sql.types.{DoubleType, IntegerType}
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.{SparkConf, SparkContext}

/*
* 读取CSV文件
* */

object CSVDemo {
  def main(args: Array[String]): Unit = {
    
    //sparkContext
//    val conf = new SparkConf().setMaster("local[*]").setAppName("CSV")
//    val sc = SparkContext.getOrCreate(conf)
//    val lines = sc.textFile("in/users.csv")

    //第一种加载并去除表头方式
    /*
    val line2 = lines.mapPartitionsWithIndex((index, value) => {
      if (index == 0)
        value.drop(0)   //去除第一行
      else
        value
    })
    line2.map(_.split(","))foreach(x=>println(x.mkString(",")))

    */

    //第二种加载并去表头方式
    /*
    lines.filter(_.startsWith("user_id")== false).map(_.split(",")).foreach(x=>println(x.mkString(",")))
    */

    //sparkSession方式
    val spark = SparkSession.builder().appName("readCSV").master("local[*]").getOrCreate()
    val df:DataFrame = spark.read.format("csv").option("header", "true")
      .load("in/users.csv")
//    df.printSchema()     //查看表头
//    df.show(10)        //只显示10行
//    df.select("user_id","birthyear").show(10)
    val df2 = df.select("user_id","birthyear")
    val df3 = df2.withColumn("birthyear",df2("birthyear").cast(IntegerType))  //类型转换
    df3.printSchema()
    df3.filter(x=>{!x.isNullAt(1) && x.getInt(1) < 1995}).show()
  }
}

JSON文件

package file

import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.{SparkConf, SparkContext}

/*
* JSON文件
* */

object JsonDemo {
  def main(args: Array[String]): Unit = {
    //sparkContext
    /*
    val conf = new SparkConf().setMaster("local[*]").setAppName("json")
    val sc = SparkContext.getOrCreate(conf)
    val lines = sc.textFile("in/users.json")
    import scala.util.parsing.json.JSON   //专门的处理JSON文件
    val rdd = lines.map(x=>JSON.parseFull(x))
    rdd.collect().foreach(println)
    */
    //sparkSession
    val spark = SparkSession.builder().appName("readJSON").master("local[*]").getOrCreate()
    val frame = spark.read.format("json").load("in/user.json")
    frame.printSchema()
    frame.show()
  }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark SQL可以通过以下方式读取不同格式的数据: 1. MySQL:可以使用JDBC连接器读取MySQL数据库中的数据。 2. JSON:可以使用Spark SQL内置的JSON数据源读取JSON格式的数据。 3. Parquet:可以使用Spark SQL内置的Parquet数据源读取Parquet格式的数据。 4. CSV:可以使用Spark SQL内置的CSV数据源读取CSV格式的数据。 5. 普通文本:可以使用Spark SQL内置的文本数据源读取普通文本格式的数据。 以上这些数据源都可以通过Spark SQL的API进行读取和处理。 ### 回答2: Spark SQL是Spark提供的用于处理结构化数据的模块,可以读取多种格式的数据,包括MySQL、JSON、Parquet、CSV以及普通文本。 对于MySQL数据的读取Spark SQL可以通过JDBC连接到MySQL数据库,然后使用SQL语句查询并加载数据到DataFrame中进行进一步处理和分析。 对于JSON数据的读取Spark SQL提供了read.json方法来加载JSON文件或目录,并将其解析为DataFrame,然后可以对其进行操作和分析。 对于Parquet数据的读取Spark SQL也提供了read.parquet方法,通过指定Parquet文件或目录路径,可以加载并解析为DataFrame,然后进行进一步处理与分析。 对于CSV数据的读取Spark SQL可以使用read.csv方法加载CSV文件或目录,并解析为DataFrame进行后续处理与分析。 对于普通文本数据的读取Spark SQL可以使用read.text方法加载文本文件或目录,并将其按行解析为DataFrame,然后进行进一步处理与分析。 总结来说,Spark SQL提供了丰富的API方法来读取不同格式的数据,包括MySQL、JSON、Parquet、CSV以及普通文本,将其解析为DataFrame进行进一步处理和分析,提供了便捷高效的数据处理能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值