博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SparkSQL使用IDEA快速入门DataFrame与DataSet
阅读量:3953 次
发布时间:2019-05-24

本文共 2121 字,大约阅读时间需要 7 分钟。

1.使用IDEA开发Spark SQL

1.1创建DataFrame/DataSet

1、指定列名添加Schema

2、通过StrucType指定Schema

3、编写样例类,利用反射机制推断Schema

1.1.1指定列名添加Schema
//导包import org.apache.spark.rdd.RDDimport org.apache.spark.sql.SparkSession//代码// 1.创建SparkSession    val spark = SparkSession.builder().master("local[*]").appName("sql").getOrCreate()// 2.使用spark 获取sparkContext 上下文对象    val sc = spark.sparkContext// 3.使用SparkContext 读取文件并按照空格切分 返回RDD    val rowRDD: RDD[(Int, String, Int)] = sc.textFile("./data/person.txt").map(_.split(" ")).map(x=>(x(0).toInt,x(1),x(2).toInt))// 4.导入隐式类    import spark.implicits._//5.将RDD 转换为DataFrame 指定元数据信息    val dataFrame = rowRDD.toDF("id","name","age")//6.数据展示    dataFrame.show()
1.1.2StructType指定Schema
//导包import org.apache.spark.sql.{Row, SparkSession}import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}//编写代码//1.实例SparkSession    val spark = SparkSession.builder().master("local[*]").appName("sql").getOrCreate()//2.根据SparkSession获取SparkContext 上下文对象    val sc = spark.sparkContext// 3.使用SparkContext读取文件并按照空开切分并返回元组    val rowRDD = sc.textFile("./data/person.txt").map(_.split(" ")).map(x=>Row(x(0).toInt,x(1),x(2).toInt))// 4.导入隐式类    import spark.implicits._//5.使用StructType 添加元数据信息    val schema = StructType(List(      StructField("id", IntegerType, true),      StructField("name", StringType, true),      StructField("age", IntegerType, true)    ))//6.将数据与元数据进行拼接 返回一个DataFrame    val dataDF = spark.createDataFrame(rowRDD,schema)//7.数据展示    dataDF.show()
1.1.3反射推断Schema
//导包import org.apache.spark.rdd.RDDimport org.apache.spark.sql.SparkSession//定义单例对象  case class Person(Id:Int,name:String,age:Int)//编写代码//1.实例sparkSession    val spark = SparkSession.builder().master("local[*]").appName("sql").getOrCreate()//2.通过sparkSession获取sparkContext 上下文对象    val sc = spark.sparkContext//3.通过sparkContext 读取文件并按照空格切分 将每一个数据保存到person中    val rowRDD: RDD[Person] = sc.textFile("./data/person.txt").map(_.split(" ")).map(x=>Person(x(0).toInt,x(1),x(2).toInt))// 4.导入隐式类    import spark.implicits._//5.将rowRDD转换为dataFrame    val dataFrame = rowRDD.toDF()    //6.数据展示    dataFrame.show()

转载地址:http://bokzi.baihongyu.com/

你可能感兴趣的文章
android JNI 学习笔记
查看>>
linux内核基本数据类型总结
查看>>
linux内核基本数据类型总结
查看>>
strstr
查看>>
isspace
查看>>
tolower
查看>>
Linux 2.6 字符设备驱动程序
查看>>
Linux 用户态与内核态的交互——netlink 篇
查看>>
Android 的用户层 uevent处理机制
查看>>
linux内核register_chrdev_region()系列函数
查看>>
嵌入式C语言中的volatile关键字
查看>>
Linux驱动程序开发 - 设备驱动模型初探
查看>>
Android之 BatteryService
查看>>
Android init初始化程序分析
查看>>
浅析dev目录下设备文件mknod节点gid,uid和mode的如何方便设置
查看>>
Android 加速度传感器 (G-Sensor) 收
查看>>
Linux 下如何 做patch 和打patch
查看>>
device_driver结构体
查看>>
模拟是本土仪表技术落后的原因之一
查看>>
锂电池驱动分析
查看>>