RDD转换成DataFrame的两种方法
来源:互联网 发布:软件模块间接口 编辑:程序博客网 时间:2024/06/13 22:04
1.根据反射推断schema
import org.apache.spark.{SparkContext, SparkConf}import org.apache.spark.sql.SQLContextobject createDF { // 方法1 根据包括case class数据的RDD转换成DataFrame // case class定义表的schema,case class的属性会被读取并且成为列的名字 case class Person(name: String, age: Int) def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("sparkSQLTest").setMaster("local") val sc = new SparkContext(conf) val sqlContext = new SQLContext(sc) //先将RDD转化成case class 数据类型,然后再通过toDF()方法隐式转换成DataFrame import sqlContext.implicits._ val people = sc.textFile("your file path").map(_.split(",")).map(p =>Person(p(0), p(1).trim.toInt)).toDF() //注册成一个表 people.registerTempTable("peopleTable") //然后可以对表进行各种操作,比如打印出13到19岁青少年的姓名 val teenagers = sqlContext.sql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19") teenagers.map(t => "Name: " + t(0)).collect().foreach(println) }}
2.使用Programmatically的方式指定Schema
import org.apache.spark.{SparkContext, SparkConf}import org.apache.spark.sql.SQLContextimport org.apache.spark.sql.types.{StringType, IntegerType, StructField, StructType}import org.apache.spark.sql.Rowobject createDF { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("sparkSQLTest").setMaster("local") val sc = new SparkContext(conf) val sqlContext = new SQLContext(sc) //step1: 从原来的 RDD 创建一个行的 RDD val peopleRow = sc.textFile("your file path").map(_.split(",")).map(p => Row(p(0), p(1))) //step2: 创建由一个 StructType 表示的模式, 并且与第一步创建的 RDD 的行结构相匹配 //构造schema用到了两个类StructType和StructFile,其中StructFile类的三个参数分别是(字段名称,类型,数据是否可以用null填充) val schema = StructType(Array(StructField("name", StringType, true), StructField("age", IntegerType, true))) //step3.在行 RDD 上通过 createDataFrame 方法应用模式 val people = sqlContext.createDataFrame(peopleRow, schema) people.registerTempTable("peopleTable") //然后可以对表进行各种操作,比如打印出13到19岁青少年的姓名 val teenagers = sqlContext.sql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19") teenagers.map(t => "Name: " + t(0)).collect().foreach(println) }}
阅读全文
0 0
- RDD转换成DataFrame的两种方法
- Spark将RDD转换成DataFrame的两种方式
- Spark将RDD转换成DataFrame的两种方式
- Spark中RDD转换成DataFrame的两种方式(分别用Java和scala实现)
- Spark中RDD转换成DataFrame的两种方式(分别用Java和scala实现)
- RDD转换为DataFrame的两种方式及spark sql的简单实例
- RDD动态转换成DataFrame
- 将RDD转换成DataFrame
- Spark RDD/DataFrame map保存数据的两种方式
- spark rdd转dataframe的两种方式
- rdd转换为DataFrame
- RDD转换为DataFrame案例
- 从RDD转换得到DataFrame
- spark: RDD与DataFrame之间的相互转换
- spark基础之RDD和DataFrame的转换方式
- 将任意Java对象RDD转换成DataFrame
- 通过编程方式将RDD转换成DataFrame
- [2.2]Spark DataFrame操作(二)之通过反射实现RDD与DataFrame的转换
- “恒德”机场智能应急指挥调度系统解决方案
- js replace(a,b)之替换字符串中所有指定字符的方法
- 知识累计日常_17.11.14
- Python 爬虫学习笔记二: xpath 模块
- java session的监听微解
- RDD转换成DataFrame的两种方法
- Flume Source 实例
- (1)spring
- java 自我知识总结(六) 栈 堆 队列
- jQuery无缝轮播
- C++程序调包含TensorFlow代码的Python脚本出错问题的解决方案
- JavaScript编程-可选的分号
- HDOJ 1491 Octorber 21st
- PHPqrcode 生成二维码