-
DataFrame? Spark平臺的分布式彈性數(shù)據(jù)集
DataFrame以 RDD為基礎(chǔ)的分布式數(shù)據(jù)集, 是Row對象的集合
DataSet是 DataFrame的一個(gè)特例, 強(qiáng)類型數(shù)據(jù)集
????DF 對 RDD的優(yōu)勢:
DF提供數(shù)據(jù)的結(jié)構(gòu)信息
DF定制化內(nèi)存管理, 數(shù)據(jù)存放于JVM堆外內(nèi)存
DF先轉(zhuǎn)換為邏輯計(jì)劃在執(zhí)行,對任何語言執(zhí)行效率一樣
DF提供更豐富API
????DataSet 對比DataFrame優(yōu)點(diǎn):
具備DF優(yōu)點(diǎn)
Api面向?qū)ο?/p>
#創(chuàng)建DataFrame方法:??讀文件或者?RDD轉(zhuǎn)換為DF sparkSession.read.json() sparkSession.read.csv() #RDD轉(zhuǎn)化為DF #通過自定義的case?class object?MyProject{ ????case?class?Person(name:String,?age:Int)??#兩個(gè)列name和age ???????? ????def?main(args:?Array[String]):?Unit={ ????????val?sparkSession?=?SparkSession ????????????.builder() ????????????.master(master="local")????#本地運(yùn)行 ????????????.getOrCreate() ????????val?sparkContext?=?sparkSession.sparkContext ????????val?rdd?=?sparkContext.textFile("") ???????? ????????val?rowRDD?=?rdd.map(_.split("?"))??#每一行空格切割 ????????????.map(x?=>Person(x(0),x(1).toInt))??#rdd和caseClass關(guān)聯(lián) ???????? ????????#執(zhí)行toDF()方法將RDD轉(zhuǎn)換為DF ????????import?sparkSession.implicits._ ????????val?df?=?rowRDD.toDF() ???????? ????????df.show() ???????? ????????sparkSession.stop() ????} } #通過自定義schema #val?rdd后開始 val?schemaField?=?"name,?age" val?schemaString?=?schemaField.split(",") val?schema?=?StructType( ????List( ????????StructField(schemaString(0).StringType,?nullable=true), ????????StructField(schemaString(1).IntegerType,?nullable=true) ????) ) #生成Row類型參數(shù)RDD val?rowRDD?=?rdd.map(_.split("?")) ????.map(x?=>Row(x(0),x(1).toInt)) val?df?=?sparkSession.createDataFrame(rowRDD,schema)??#轉(zhuǎn)換成df
#DataFrame轉(zhuǎn)換為RDD val?rdd?=?df.rdd #創(chuàng)建Dataset: #df轉(zhuǎn)化為dataset import?sparkSession.implicits_ val?ds?=?df.as[Person]???#因?yàn)镽ow對象是Person對象 #rdd轉(zhuǎn)換為dataset import?sparkSession.implicits_ val?ds?=?sparkSession.createDataset(rdd) ##RDD和datatset toDS()?rdd->Dataset rdd()?Dataset->rdd ##Dataset和DataFrame toDF()?Dataset->DataFrame as[ElementTyle]?Dataframe->dataset
查看全部 -
Spark SQL 邏輯計(jì)劃- 物理計(jì)劃 -優(yōu)化
查看全部 -
Spark SQL 分布式SQL引擎
底層依賴RDD, 處理結(jié)構(gòu)化數(shù)據(jù)的一個(gè)模塊
入口:SparkSession (2.0之后)
//Scala?不需要hive則不需要hivesupport val?spark?=?SparkSession.builder().enableHiveSupport().getOrCreate
Spark SQL和hive區(qū)別:
Hive基于Mapreduce框架實(shí)現(xiàn)SQL操作
Spark SQL擁有Catalyst優(yōu)化器, 支持不同數(shù)據(jù)源
Spark SQL沒有自己的存儲, Hive集成HDFS?
SparkSQL沒有自己的元數(shù)據(jù)管理,要依賴Hive
Spark SQL 訪問 Hive 倉庫:
1. SPARK_HOME/conf 下添加 hive-site.xml
2. 啟動(dòng) thriftserver服務(wù) : SPARK_HOME/sbin/start-thriftserver.sh
查看全部 -
事實(shí)表,類似于全量表,維度表類似于增量表查看全部
-
66666666666666
查看全部 -
spark sql區(qū)別與hive 1. spark sql在內(nèi)存中運(yùn)算 2. spark sql 依賴catalst進(jìn)行sql解析 3. spark sql訪問hive數(shù)據(jù)方式:spark sql—》thriftServer解析器—》metadata—》hive元數(shù)據(jù)查看全部
-
記筆記查看全部
-
sparksql和hive對比
sparksql有catalyst優(yōu)化器
sparksql 如何訪問hive:hive-site.xml放到SPARK_HOME/conf
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 然后/$SPARK_HOME/sbin/start-thriftserver.sh
查看全部 -
很好查看全部
舉報(bào)