我是
靠谱客的博主
美满西装,最近开发中收集的这篇文章主要介绍
spark创建DF的两种方式,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
方式一:反射:(使用这种方式来创建DF是在你知道字段具体有哪些) 1.创建一个SparkContext,然后再创建SQLContext 2.先创建RDD,对数据进行整理,然后关联case class,将非结构化的数据转换成结构化数据 3.显示的调用toDF方法,将RDD转换成DF(需要隐私转换) 4.注册临时表 5.执行SQL(Transformation,lazy) 6.zhixAction
val conf = new SparkConf().setAppName("df").setMaster("local") val sc = new SparkContext(conf) val sqlContext = new SQLContext(sc) //创建一个普通RDD val rdd = sc.textFile("G:\qf大数据\spark\day06_sql\students.txt") val student: RDD[Student] = rdd.map(x => { val sp = x.split(" ") Student(sp(0).toInt, sp(1), sp(2).toInt) }) import sqlContext.implicits._ val df: DataFrame = student.toDF() df.registerTempTable("student") val df1 = sqlContext.sql("select * from student where age<18") df1.show() //将数据使用json的格式保存,并且这里使用的追加的操作。 df1.write.mode(SaveMode.Append).json("")
方式二:接口方式:(不知道数据的具体字段有哪些,一般开发中都会使用这种方式) 1.创建sparkContext,然后创建SQLContext 2.想创建RDD对数据进行整理,然后关联Row,将非结构化数据转换成结构化数据 3.定义schema(StructType(Array(StructField()) 4.注册临时表 5.执行SQL 6.执行Action
val conf = new SparkConf().setAppName("df02").setMaster("local") val sc = new SparkContext(conf) val sqlContext = new SQLContext(sc) val rdd = sc.textFile("G:\qf大数据\spark\day06_sql\students.txt") rdd.map(x=>{ val str = x.split(",") Row(str(0).toInt,str(1),str(2).toInt) }) val structType = StructType(Array(StructField("id",IntegerType,true),StructField("name",StringType,true),StructField("age",IntegerType,true))) val df = sqlContext.createDataFrame(structType) df.registerTempTable("student") sqlContext.sql("select * from student") |
|
最后
以上就是美满西装为你收集整理的spark创建DF的两种方式的全部内容,希望文章能够帮你解决spark创建DF的两种方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复