Spark RDD转换为DataFrame

#构造case class,利用反射机制隐式转换
scala> import spark.implicits._
scala> val rdd= sc.textFile("input/textdata.txt")
scala> case class Person(id:Int,name:String)
scala> val df = rdd.map(_.split(",")).map(x=>Person(x(0).toInt,x(1))).toDF
scala> df.show
+---+--------+
| id| name|
+---+--------+
| 1|zhangsan|
| 2| lisi|
| 3| wangwu|
| 4| zhaoliu|
+---+--------+

#通过schema,Row构造dataframe
scala> import org.apache.spark.sql.types._
scala> import org.apache.spark.sql.Row
scala> val structFields = Array(StructField("id",IntegerType,true),StructField("name",StringType,true))
scala> val structType = StructType(structFields) #创建schema结构
scala> val lines= sc.textFile("input/textdata.txt")
scala> val rdd = lines.map(_.split(",")).map(x=>Row(x(0).toInt,x(1))) #创建RDD[Row]
scala> val df = spark.createDataFrame(rdd,structType) #通过RDD[Row],schema构建DataFrame
scala> df.show
+---+--------+
| id| name|
+---+--------+
| 1|zhangsan|
| 2| lisi|
| 3| wangwu|
| 4| zhaoliu|
+---+--------+

  

cat textdata.txt
1,zhangsan
2,lisi
3,wangwu
4,zhaoliu

  

时间: 2024-10-19 15:07:30

Spark RDD转换为DataFrame的相关文章

spark RDD,DataFrame,DataSet 介绍

弹性分布式数据集(Resilient Distributed Dataset,RDD) RDD是Spark一开始就提供的主要API,从根本上来说,一个RDD就是你的数据的一个不可变的分布式元素集合,在集群中跨节点分布,可以通过若干提供了转换和处理的底层API进行并行处理.每个RDD都被分为多个分区,这些分区运行在集群不同的节点上. RDD支持两种类型的操作,转化操作(transform)和行动操作(action).转化操作会有一个RDD生成一个新的RDD,行动操作则要计算出来一个结果.spark

Spark RDD、DataFrame和DataSet的区别

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 转载请标明出处:小帆的帆的专栏 RDD 优点: 编译时类型安全 编译时就能检查出类型错误 面向对象的编程风格 直接通过类名点的方式来操作数据 缺点: 序列化和反序列化的性能开销 无论是集群间的通信, 还是IO操作都需要对对象的结构和数据进行序列化和反序列化. GC的性能开销 频繁的创建和销毁对象, 势必会增加GC import org.apache.spark.sql.SQLContext import org.apache

Spark RDD转换成DataFrame的两种方式

Spark SQL支持两种方式将现有RDD转换为DataFrame.第一种方法使用反射来推断RDD的schema并创建DataSet然后将其转化为DataFrame.这种基于反射方法十分简便,但是前提是在您编写Spark应用程序时就已经知道RDD的schema类型.第二种方法是通过编程接口,使用您构建的StructType,然后将其应用于现有RDD.虽然此方法很麻烦,但它允许您在运行之前并不知道列及其类型的情况下构建DataSet 方法如下 1.将RDD转换成Rows 2.按照第一步Rows的结

spark结构化数据处理:Spark SQL、DataFrame和Dataset

本文讲解Spark的结构化数据处理,主要包括:Spark SQL.DataFrame.Dataset以及Spark SQL服务等相关内容.本文主要讲解Spark 1.6.x的结构化数据处理相关东东,但因Spark发展迅速(本文的写作时值Spark 1.6.2发布之际,并且Spark 2.0的预览版本也已发布许久),因此请随时关注Spark SQL官方文档以了解最新信息. 文中使用Scala对Spark SQL进行讲解,并且代码大多都能在spark-shell中运行,关于这点请知晓. 概述 相比于

Spark中的RDD和DataFrame

什么是DataFrame 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格. RDD和DataFrame的区别 DataFrame与RDD的主要区别在于,DataFrame带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型.使得Spark SQL得以洞察更多的结构信息,从而对藏于DataFrame背后的数据源以及作用于DataFrame之上的变换进行了针对性的优化,最终达到大幅提升运行时效率的目标. RDD,

Apache Spark 2.0三种API的传说:RDD、DataFrame和Dataset

Apache Spark吸引广大社区开发者的一个重要原因是:Apache Spark提供极其简单.易用的APIs,支持跨多种语言(比如:Scala.Java.Python和R)来操作大数据. 本文主要讲解Apache Spark 2.0中RDD,DataFrame和Dataset三种API:它们各自适合的使用场景:它们的性能和优化:列举使用DataFrame和DataSet代替RDD的场景.文章大部分聚焦DataFrame和Dataset,因为这是Apache Spark 2.0的API统一的重

spark sql 之 RDD与DataFrame互相转化

一.RDD转DataFrame 方法一:通过 case class 创建 DataFrames import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.sql.SQLContext object TestDataFrame { def main(args: Array[String]): Unit = { /** * 1.初始化 spark config */ v

转】Spark SQL 之 DataFrame

原博文出自于: http://www.cnblogs.com/BYRans/p/5003029.html 感谢! Spark SQL 之 DataFrame 转载请注明出处:http://www.cnblogs.com/BYRans/ 概述(Overview) Spark SQL是Spark的一个组件,用于结构化数据的计算.Spark SQL提供了一个称为DataFrames的编程抽象,DataFrames可以充当分布式SQL查询引擎. DataFrames DataFrame是一个分布式的数据

RDD、DataFrame和DataSet的区别

原文链接:http://www.jianshu.com/p/c0181667daa0 RDD.DataFrame和DataSet是容易产生混淆的概念,必须对其相互之间对比,才可以知道其中异同. RDD和DataFrame RDD-DataFrame 上图直观地体现了DataFrame和RDD的区别.左侧的RDD[Person]虽然以Person为类型参数,但Spark框架本身不了解Person类的内部结构.而右侧的DataFrame却提供了详细的结构信息,使得Spark SQL可以清楚地知道该数