1. 程式人生 > >Spark專案學習-慕課網日誌分析-days3-DataFrame&Dataset

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