Spark读取csv、json文件

Spark读取csv文件

package nj.zb.kb11

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

object ReadCsvDemo {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("sparkreadcsv")
    val sc = SparkContext.getOrCreate(conf)
    val lines = sc.textFile("E:\\ideaProjects\\sparkstu\\in\\users.csv")

    val lines1: RDD[Array[String]] = lines.filter(x=>x.startsWith("user_id")==false).map(x=>x.split(","))


    //加载csv,去除head,另一个方法
    // lines1.collect().foreach(x=>println(x.toList))



    //加载csv文件,去除head

//    val lines2 = lines.mapPartitionsWithIndex((index, value) => {
//      if (index == 0)
//        value.drop(1)
//      else
//        value
//    })
//    val lines3: RDD[Array[String]] = lines2.map(x=>x.split(","))
//
//    for (x<- lines3){
//      println(x.toList)
//    }


    //以上内容是   sparkContext 操作

     val spark: SparkSession = SparkSession.builder().appName("ReadCsvSparkSession").master("local[*]").getOrCreate()
    val df: DataFrame = spark.read.format("csv").option("header",true).load("in/users.csv")
    df.printSchema()
    df.show(10)
    val df2: DataFrame = df.select("user_id","birthyear")
    //将  birthyear的 schema  从string类型转换成  double 类型
    val df3: DataFrame = df2.withColumn("birthyear",df2("birthyear").cast(DoubleType))

    df3.filter(x=>x.getDouble(1) <= 1995).show(10)
  }
}

Spark读取Json文件

package nj.zb.kb11

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

object ReadJsonDemo {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("sparkreadcsv")
    val sc = SparkContext.getOrCreate(conf)
    val spark: SparkSession = SparkSession.builder().appName("ReadCsvSparkSession").master("local[*]").getOrCreate()


    //sparkContext 方式
//    val lines: RDD[String] = sc.textFile("in/user.json")
//    import scala.util.parsing.json.JSON
//    val rdd: RDD[Option[Any]] = lines.map(x=>JSON.parseFull(x))
//    rdd.collect().foreach(println)

    //schema方式
    val frame: DataFrame = spark.read.format("json").option("head",true).load("in/user.json")
    frame.printSchema()

  }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值