1.使用IDEA开发Spark SQL
1.1创建DataFrame/DataSet
1、指定列名添加Schema
2、通过StrucType指定Schema
3、编写样例类,利用反射机制推断Schema
1.1.1指定列名添加Schema
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//导包
import org.apache.spark.rdd.RDD
import 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
//导包
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//导包
import org.apache.spark.rdd.RDD
import 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()
|
到此这篇关于SparkSQL使用IDEA快速入门DataFrame与DataSet的文章就介绍到这了,更多相关SparkSQL快速入门内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/qq_43791724/article/details/105468076