日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

第五章 Spark-SQL进阶(一)之Dataset用法

發布時間:2023/12/10 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第五章 Spark-SQL进阶(一)之Dataset用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spark系列文章目錄

第一章 初識Spark
第二章 Spark-Core核心模型(一)
第二章 Spark-Core核心模型(二)
第三章 Spark-Core編程進階(一)
第三章 Spark-Core編程進階(二)
第四章 Spark-SQL基礎(一)
第四章 Spark-SQL基礎(二)
第五章 Spark-SQL進階(一)
第五章 Spark-SQL進階(二)
第五章 Spark-SQL進階(三)


文章目錄

  • Spark系列文章目錄
  • 第五章 Spark-SQL進階(一)
    • 1.核心語法
      • 1.1DataFrame
      • 1.2數據類型
      • 1.3注冊視圖
      • 1.4Dataset
      • 1.5Dataset API方法


第五章 Spark-SQL進階(一)

1.核心語法

1.1DataFrame

  • 第一種方式
    • 通過讀取外部數據集
    • spark.read.數據源方法()
    • DataFrameReader對象中有Spark內置支持數據源讀取數據的方法
      • eg:parquet csv text json jdbc table orc等
  • 第二種方式
    • 通過createDataFrame方法傳遞RDD或Seq參數
    • createDataFrame[A <: Product : TypeTag](rdd: RDD[A])
    • createDataFrame(rowRDD: RDD[Row], schema: StructType)
    • createDataFrame[A <: Product : TypeTag](data: Seq[A])
  • 第三種方式
    • 通過RDD或Seq對象隱式轉化方法
    • rdd.toDF([colNames*])
    • seq.toDF([colNames*])

1.2數據類型

SparkSQL和DataFrames支持以下數據類型

  • 數值類型
    • ByteType
    • ShortType
    • IntegerType
    • LongType
    • FloatType
    • DoubleType
    • DecimalType
  • 字符串類型
    • StringType
  • 二進制類型
    • BinaryType
  • 布爾類型
    • BooleanType
  • 日期時間類型
    • TimestampType DateType
  • 復雜類型
    • ArrayType (elementType, containsNull)
    • MapType (keyType, valueType, valueContainsNull)
    • StructType (fields)
    • StructField(name, dataType, nullable)

注意,以上類型都來自 import org.apache.spark.sql.types._。

1.3注冊視圖

視圖分為:

  • 臨時視圖

    • 范圍是會話級別
    • 注冊臨時視圖:createTempView(viewName: String)
    • 注冊或替換臨時視圖:createOrReplaceTempView(viewName: String)(推薦)
  • 全局臨時視圖

    • 范圍是所有會話

    • 所有會話之間共享一個全局臨時視圖

    • 與系統數據庫global_temp相關聯

      • 使用全局臨時視圖時必須使用限定名稱來引用
    • 注冊全局臨時視圖:createGlobalTempView(viewName: String)

    • 注冊或替換全局臨時視圖:createOrReplaceGlobalTempView(viewName: String)(推薦)

使用案例:

//1.注冊為全局臨時視圖 df.createGlobalTempView("people") //2.運行SQL的方式查詢數據,注意,全局臨時視圖需關聯系統數據庫global_temp spark.sql("SELECT * FROM global_temp.people").show() //3.在一個新的會話中查詢數據 spark.newSession().sql("SELECT * FROM global_temp.people").show()

?

1.4Dataset

  • 第一種方式
    • 通過createDataset方法傳遞RDD或Seq參數
    • createDataset[T : Encoder](data: Seq[T])
    • createDataset[T : Encoder](data: RDD[T])
  • 第二種方式
    • 通過DataFrame對象轉化創建
    • df.as[T]
  • 第三種方式
    • 通過RDD或Seq對象隱式轉化創建
    • rdd.toDS
    • seq.toDS

1.5Dataset API方法

  • 類似于RDD的API

    • map
    • flatMap
    • mapPartitions
    • filter
    • joinWith
    • orderBy
    • repartition
    • repartitionByRange
    • sample
    • transform
    • sort
    • sortWithinPartitions
    • union
    • unionByName
    • distinct
    • coalesce
  • 輸出到控制臺

    • show([numRows: Int,[truncate: Boolean|truncate: Int,[vertical: Boolean]]]):Unit
  • 查看數據結構信息

    • printSchema():Unit
  • 查詢對應列數據

    • select(col: String, cols: String*): DataFrame
    • *select(cols: Column*): DataFrame
    • selectExpr(exprs: String*): DataFrame
    • select[U1](c1: TypedColumn[T, U1]): Dataset[U1]
  • 按條件查詢

    • where(condition: Column|conditionExpr: String): Dataset[T]
    • filter(condition: Column|conditionExpr: String|func: T => Boolean):Dataset[T]
  • 限制返回行數

    • limit(n: Int): Dataset[T]
  • 分組

    • groupBy(cols: Column*|col1: String, cols: String*): RelationalGroupedDataset
  • 獲取某列數據

    • apply(colName: String): Column
    • col(colName: String): Column

注意,完整的方法可查看Dataset參考API文檔。

總結

以上是生活随笔為你收集整理的第五章 Spark-SQL进阶(一)之Dataset用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。