Spark專案學習-慕課網日誌分析-days3-DataFrame&Dataset
1.DataFrame
1)不是Spark SQL提出的,而是早期在R,Pandas中產生的
2)DataFrame是一個以列(列名、列的型別、列值)的形式構成的分散式的資料集,按照列賦予不同的名稱
3)是關係型資料庫中的一張表或者是R/Python中的一個dataframe概念,但是具有更多優化
2.DataFrame對比RDD(DataFrame能夠具有更多資訊)
RDD:
java/scala ==> jvm
python ==> python runtime
DataFrame:
java/scala/python ==> Logic Plan 不同語言程式設計效果一樣
3.DataFrame基本API常用操作
1)peopleDF.printSchema 列印Schema資訊
2)peopleDF.show(100) 輸出前100條記錄
3)peopleDF.select("name").show() 只查詢name欄位的記錄
peopleDF.select(peopleDF.col("name"),(peopleDF.col("age")+10).as("age2")).show() 查詢某幾列所有的資料,並且把資料都+10
4)peopleDF.filter(peopleDF.col("age">19).show() 對某一列的值進行過濾
studentDF.filter("substring(name,0,1)='M'").show 通過SubString函式將首字母為M的名字展示出來
5)peopleDF.groupBy("age").count().show() 根據某一列進行分組再進行聚合操作
6)peopleDF.sort(peopleDF("name").asc,peopleDF("id").desc).show 排序 按名字升序,按id降序
7)peopleDF.join(peopleDF2,peopleDF.col("id")===peopleDF2.col("id")).show join表連線操作
4.DataFrame和RDD的互操作
1)使用反射機制,將RDD轉換為DataFrame,使用反射
5.DataFrame API操作案例實戰(學生資訊統計案例)
6.Dataset概述及使用
1)Dataset是一個分散式的資料集,強型別,支援lambda公式,提供優化引擎,可以在Java和Scala裡面使用
2)spark如何解析csv檔案
val df = spark.read.option("header","true").option("inferScheme","true").csv(path)
df.show()
3)匯入隱式轉換:import spark.implicits._
4)Dataset概述:靜態型別和執行時型別安全,nengg