SparkSQL使用IDEA快速入門DataFrame與DataSet的完美教程
更新時間:2021年08月10日 12:03:24 作者:大數(shù)據(jù)老哥
本文給大家介紹使用idea開發(fā)Spark SQL 的詳細過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
1.使用IDEA開發(fā)Spark SQL
1.1創(chuàng)建DataFrame/DataSet
1、指定列名添加Schema
2、通過StrucType指定Schema
3、編寫樣例類,利用反射機制推斷Schema
1.1.1指定列名添加Schema
//導(dǎo)包
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SparkSession
//代碼
// 1.創(chuàng)建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.導(dǎo)入隱式類
import spark.implicits._
//5.將RDD 轉(zhuǎn)換為DataFrame 指定元數(shù)據(jù)信息
val dataFrame = rowRDD.toDF("id","name","age")
//6.數(shù)據(jù)展示
dataFrame.show()
1.1.2StructType指定Schema
//導(dǎo)包
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.根據(jù)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.導(dǎo)入隱式類
import spark.implicits._
//5.使用StructType 添加元數(shù)據(jù)信息
val schema = StructType(List(
StructField("id", IntegerType, true),
StructField("name", StringType, true),
StructField("age", IntegerType, true)
))
//6.將數(shù)據(jù)與元數(shù)據(jù)進行拼接 返回一個DataFrame
val dataDF = spark.createDataFrame(rowRDD,schema)
//7.數(shù)據(jù)展示
dataDF.show()
1.1.3反射推斷Schema
//導(dǎo)包
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 讀取文件并按照空格切分 將每一個數(shù)據(jù)保存到person中
val rowRDD: RDD[Person] = sc.textFile("./data/person.txt").map(_.split(" ")).map(x=>Person(x(0).toInt,x(1),x(2).toInt))
// 4.導(dǎo)入隱式類
import spark.implicits._
//5.將rowRDD轉(zhuǎn)換為dataFrame
val dataFrame = rowRDD.toDF()
//6.數(shù)據(jù)展示
dataFrame.show()
到此這篇關(guān)于SparkSQL使用IDEA快速入門DataFrame與DataSet的文章就介紹到這了,更多相關(guān)SparkSQL快速入門內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot+EHcache 實現(xiàn)文章瀏覽量的緩存和超時更新
這篇文章主要介紹了springboot+EHcache 實現(xiàn)文章瀏覽量的緩存和超時更新,問題描述和解決思路給大家介紹的非常詳細,需要的朋友可以參考下2017-04-04
java使用bitmap實現(xiàn)可回收自增id的示例
本文主要介紹了java使用bitmap實現(xiàn)可回收自增id的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-10-10
Java JDK動態(tài)代理(AOP)用法及實現(xiàn)原理詳解
在本篇文章了小編給大家整理的是一篇關(guān)于Java JDK動態(tài)代理(AOP)用法及實現(xiàn)原理詳解內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。2020-10-10
Spring Security實現(xiàn)多次登錄失敗后賬戶鎖定功能
當(dāng)用戶多次登錄失敗的時候,我們應(yīng)該將賬戶鎖定,等待一定的時間之后才能再次進行登錄操作。今天小編給大家分享Spring Security實現(xiàn)多次登錄失敗后賬戶鎖定功能,感興趣的朋友一起看看吧2019-11-11

