Spark创建DataFrame和读取CSV数据文件

之前写的程序中,有些API在Spark SQLContext没有,我计算的结果先保存在rdd中,最后在使用RDD转换成dataframe进行保存,话不多说下面是代码.

//一个StruceField你可以把它当成一个特征列。分别用列的名称和数据类型初始化
   val structFields = List(StructField("age",DoubleType),StructField("height",DoubleType))
   //最后通过StructField的集合来初始化表的模式。
    val types = StructType(structFields)

    val sparkConf = new SparkConf().setAppName("RDDToDataFrame").setMaster("local")
    val sparkContext = new SparkContext(sparkConf)
    val sqlContext = new SQLContext(sparkContext)

    val rdd = sparkContext.textFile("D:\\Hadoop\\hadoop-2.6.0\\datatest\\world.csv")
    //Rdd的数据,里面的数据类型要和之前的StructField里面数据类型对应。否则会报错。
    val rowRdd = rdd.map(line=>Row(line.trim.split(",")(0).toDouble,line.trim.split(",")(1).toDouble))
    //通过SQLContext来创建DataFrame.
    val df = sqlContext.createDataFrame(rowRdd,types)
    df.show()
    sparkContext.stop()

下面是Spark读取CSV数据文件的代码:

     val conf = new SparkConf()
     conf.setAppName("FilterAndWhere").setMaster("local")
     val sparkContext = new SparkContext(conf)
     val sqlContext = new SQLContext(sparkContext)
     val data =sqlContext.read.    format("com.databricks.spark.csv")
      .option("header","true") //这里如果在csv第一行有属性的话,没有就是"false"
      .option("inferSchema",true.toString)//这是自动推断属性列的数据类型。
      .load("D:\\Hadoop\\hadoop-2.6.0\\datatest\\world.csv")//文件的路径8

在这里如果使用上面的代码的话,需要在Maven里面的pom文件中加入下面这个依赖。


        <dependency>
            <groupId>com.databricks</groupId>
            <artifactId>spark-csv_2.10</artifactId>
            <version>1.4.0</version>
        </dependency>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值