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