使用Scala编程方式将RDD转换成DataFrame
博客专区 > 别寒 的博客 > 博客详情
使用Scala编程方式将RDD转换成DataFrame
别寒 发表于6个月前
使用Scala编程方式将RDD转换成DataFrame
  • 发表于 6个月前
  • 阅读 11
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

package com.hhb.spark.sql

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.{Row, SQLContext}
import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType};

/**
  * Created by dell on 2017/7/26.
  */
object RDD2DataFrameProgrammatically extends App{
  val conf = new SparkConf()
    .setMaster("local")
    .setAppName("RDD2DataFrameProgrammatically")
    .set("spark.testing.memory", "2147480000")
  val sc = new SparkContext(conf)
  val sqlContext = new SQLContext(sc)

  // 构造出元素为Row的普通RDD
  val studentRDD = sc.textFile("c://students.txt", 1)
    .map{ line => Row(line.split(",")(0).toInt, line.split(",")(1), line.split(",")(2).toInt) }

  // 编程方式动态构造元数据
  val structType = StructType(Array(
    StructField("id", IntegerType, true),
    StructField("name", StringType, true),
    StructField("age", IntegerType, true)
  ))

  // 进行rdd到dataframe的转换
  val studentDF = sqlContext.createDataFrame(studentRDD, structType)

  // 继续正常使用
  studentDF.registerTempTable("students")

  val teenagerDF = sqlContext.sql("select * from students where age <= 18")

  val teenagerRDD = teenagerDF.rdd.collect().foreach(println(_))

}

共有 人打赏支持
粉丝 28
博文 254
码字总数 130346
×
别寒
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: