p

orgapache火花

sql

sql

允許關係查詢的執行,包括那些用SQL表達使用火花。

線性超
AnyRef,任何
訂購
  1. 字母
  2. 通過繼承
繼承了
  1. sql
  2. AnyRef
  3. 任何
  1. 隱藏所有
  2. 顯示所有
可見性
  1. 公共
  2. 所有

類型成員

  1. AnalysisException擴展異常SparkThrowable可序列化的

    時拋出一個查詢失敗分析,通常是因為查詢本身是無效的。

    時拋出一個查詢失敗分析,通常是因為查詢本身是無效的。

    注釋
    @Stable ()

    1.3.0

  2. 擴展日誌記錄

    這一列數據為基礎進行計算DataFrame

    這一列數據為基礎進行計算DataFrame

    可以構造一個新列DataFrame基於輸入列的禮物:

    df (“columnName”)/ /在一個特定的“df”DataFrame。坳(“columnName”)/ /通用列沒有與DataFrame相關聯。坳(“columnName.field”)/ /提取一個結構體字段坳(“a.column.with.dots”)/ /逃避”。在列名。美元“columnName”/ / Scala短手指定列。

    對象可以構成複雜的表達式:

    美元“一個”+1美元“一個”= = = $“b”
    注釋
    @Stable ()

    1.3.0

    請注意

    可以通過訪問內部催化劑表達式expr,但該方法僅用於調試目的,可以改變在未來引發釋放。

  3. ColumnName擴展

    一個方便的類用於構建模式。

    一個方便的類用於構建模式。

    注釋
    @Stable ()

    1.3.0

  4. 特征CreateTableWriter(T]擴展WriteConfigMethods(CreateTableWriter(T]]

    特征限製調用創建和替換操作。

    特征限製調用創建和替換操作。

    3.0.0

  5. 類型DataFrame=數據集(]
  6. 最後DataFrameNaFunctions擴展AnyRef

    處理缺失數據的功能DataFrame年代。

    處理缺失數據的功能DataFrame年代。

    注釋
    @Stable ()

    1.3.1

  7. DataFrameReader擴展日誌記錄

    接口用於負載數據集從外部存儲係統(如。

    接口用於負載數據集從外部存儲係統(如文件係統、鍵值存儲等)。使用SparkSession.read來訪問。

    注釋
    @Stable ()

    1.4.0

  8. 最後DataFrameStatFunctions擴展AnyRef

    統計功能DataFrame年代。

    統計功能DataFrame年代。

    注釋
    @Stable ()

    1.4.0

  9. 最後DataFrameWriter(T]擴展AnyRef

    接口用於編寫一個數據集(如外部存儲係統。

    接口用於編寫一個數據集外部存儲係統(如文件係統、鍵值存儲等)。使用Dataset.write來訪問。

    注釋
    @Stable ()

    1.4.0

  10. 最後DataFrameWriterV2(T]擴展CreateTableWriter(T]

    接口用於編寫一個org.apache.spark.sql.Dataset外部存儲使用v2 API。

    接口用於編寫一個org.apache.spark.sql.Dataset外部存儲使用v2 API。

    注釋
    @Experimental ()

    3.0.0

  11. 數據集(T]擴展可序列化的

    數據集是一種強類型集合的特定於域的對象可以使用功能或關係轉變為並行操作。

    數據集是一種強類型集合的特定於域的對象可以使用功能或關係轉變為並行操作。每個數據集也有一個叫做無類型的視圖DataFrame,這是一個數據集

    操作上可用數據集分為轉換和行動。轉換是產生新的數據集,和動作的觸發計算並返回結果。轉換示例包括地圖、過濾、選擇和聚合(groupBy)。示例操作計數、顯示或寫入數據文件係統。

    數據集是“懶”,即計算隻是調用時觸發一個動作。在內部,一個數據集表示一個邏輯方案,描述了計算所需數據。當調用一個操作,火花的查詢優化器優化邏輯規劃和生成一個物理規劃高效的並行和分布式的方式執行。探索合理的計劃以及優化物理計劃,使用解釋函數。

    有效地支持特定於域的對象,一個編碼器是必需的。編碼器地圖領域特定類型T引發的內部類型係統。例如,給定一個類有兩個字段,的名字(字符串)和年齡(int),一個編碼器用於告訴火花來生成代碼在運行時序列化對象成二元結構。這種二元結構通常有更低的內存占用以及優化數據處理的效率(如柱狀的格式)。了解內部二進製表示數據,使用模式函數。

    通常有兩種方法可以創建一個數據集。最常見的方式是通過火花指向一些文件存儲係統,使用功能上可用SparkSession

    瓦爾人= spark.read.parquet (“…”)。as[人]/ / Scala數據集<人>人= spark.read () .parquet (“…”)。as (Encoders.bean(人。));/ / Java

    數據也可以通過創建轉換可以在現有的數據集。例如,下麵創建一個新的數據集通過應用現有的過濾器:

    瓦爾名稱= people.map (_.name)/ /在Scala中;名字是一個數據集(字符串)數據集<字符串> =人名字。地圖((p) - > p.name Encoders.STRING));

    數據集操作也可以無類型,通過各種領域特定語言(DSL)中定義的功能:數據集(這類),,功能。這些操作中可用的操作非常類似於R或Python的抽象數據幀。

    選擇一列的數據集,使用應用方法在Scala中,上校在Java中。

    瓦爾ageCol =人(“年齡”)/ /在Scala中列ageCol = people.col (“年齡”);/ /在Java中

    請注意,類型也可以通過其各種功能操作。

    / /下麵創建一個新的列,增加每個人的年齡10。人(“年齡”)+10/ /在Scala中people.col (“年齡”)的話語(10);/ /在Java中

    Scala中的一個更具體的例子:

    / /創建數據集使用SparkSession(行)瓦爾人= spark.read.parquet (“…”)瓦爾部門= spark.read.parquet (“…”)people.filter (“30歲>”). join(部門、人(“deptId”)= = =部門(“id”).groupBy(部門(“名稱”)、人(“性別”).agg (avg(人(“工資”))、馬克斯(人(“年齡”)))

    和在Java中:

    / /創建數據集使用SparkSession <行>數據集<行>人= spark.read () .parquet (“…”);數據集<行>部門= spark.read () .parquet (“…”);people.filter (people.col (“年齡”)gt (30.. join(部門、people.col ())“deptId”).equalTo (department.col (“id”))).groupBy (department.col (“名稱”),people.col (“性別”).agg (avg (people.col (“工資”)),馬克斯(people.col (“年齡”)));
    注釋
    @Stable ()

    1.6.0

  12. 用例類DatasetHolder(T]擴展產品可序列化的

    一個集裝箱數據集在Scala中,用於隱式轉換。

    一個集裝箱數據集在Scala中,用於隱式轉換。

    在SQL使用這個,進口隱式轉換:

    瓦爾火花:SparkSession =…進口spark.implicits._
    注釋
    @Stable ()

    1.6.0

  13. 特征編碼器(T]擴展可序列化的

    用於轉換一個JVM類型的對象T從內部引發SQL表示。

    用於轉換一個JVM類型的對象T從內部引發SQL表示。

    Scala

    值得一提的是編碼器通常是通過自動創建的SparkSession通過調用靜態方法,也可以顯式地創建編碼器

    進口spark.implicits._瓦爾ds =Seq(1,2,3).toDS ()/ /隱式地提供(spark.implicits.newIntEncoder)

    Java

    指定編碼器通過調用靜態方法編碼器

    列表<字符串> data = arrays . aslist (“abc”,“abc”,“xyz”);數據集<字符串> ds =上下文。createDataset(數據,Encoders.STRING ());

    編碼器可以組合成元組:

    編碼器< Tuple2 <整數,字符串> > encoder2 = Encoders.tuple (Encoders.INT (), Encoders.STRING ());列表< Tuple2 <整數,字符串> > data2 = arrays . aslist (scala.Tuple2 (1,“一個”);數據集< Tuple2 <整數,字符串> > ds2 =上下文。createDataset (data2 encoder2);

    或由Java bean:

    Encoders.bean (MyClass。);

    實現

    • 編碼器應該是線程安全的。
    注釋
    @implicitNotFound ( "store ${T} instances in a Dataset. Primitive types (Int, String, etc) and Product types (case " +
    "classes) are supported by importing spark.implicits._ Support for serializing other types " +
    "will be added in future releases."">…
    )

    1.6.0

  14. ExperimentalMethods擴展AnyRef

    實驗方法::實驗::持有人最勇敢的人。

    實驗方法::實驗::持有人最勇敢的人。我們不保證兼容性關於二進製兼容性和穩定來源的方法。

    spark.experimental。extraStrategies + =…
    注釋
    @Experimental () @Unstable ()

    1.3.0

  15. 文摘ForeachWriter(T]擴展可序列化的

    編寫自定義邏輯的抽象類來處理由一個查詢生成的數據。

    編寫自定義邏輯的抽象類來處理由一個查詢生成的數據。這通常是用來查詢的輸出流寫入任意的存儲係統。任何實現的基類將使用火花在以下方式。

    • 這個類的一個實例負責所有的由單個任務生成的數據查詢。換句話說,一個實例負責處理一個分區的數據在一個分布式的方式生成。
    • 任何實現這個類必須是可序列化的,因為每個任務將得到一個新的serialized-deserialized提供對象的副本。因此,強烈建議任何寫作初始化數據(例如,打開一個連接或啟動一個事務)是後完成的打開(…)方法被稱為,這意味著任務準備生成數據。
    • 的生命周期方法如下。

    為每個分區與“partitionId”:每一批/時代流數據(如果它流查詢)和“epochId”:“開放(partitionId epochId)”方法。如果“開放”返回true:每一行的分區和批處理/時代,方法的過程(行)。方法“關閉(errorOrNull)”被稱為錯誤(如果有的話)出現在處理行。

    重要的幾點注意事項:

    • 火花並不能保證相同的輸出為(partitionId epochId),所以不能實現重複數據刪除(partitionId epochId)。如源提供不同數量的分區出於某種原因,火花優化改變分區數量,等等。參考火花- 28650為更多的細節。如果你需要重複數據刪除輸出,嚐試foreachBatch代替。
    • close ()方法將調用open ()方法返回成功(不管返回值),除了中間如果JVM崩潰。

    Scala的例子:

    datasetOfString.writeStream.foreach (ForeachWriter [字符串){def打開(partitionId:版本:):布爾= {/ /打開連接}def過程記錄:字符串)= {/ /寫字符串連接}def關閉(errorOrNull: Throwable):單位= {/ /關閉連接}})

    Java示例:

    datasetOfString.writeStream () .foreach (ForeachWriter <字符串> (){@Override公共布爾開放(長partitionId,長版){/ /打開連接}@Override公共空過程(字符串值){/ /寫字符串連接}@Override公共空白關閉(Throwable errorOrNull) {/ /關閉連接}});

    2.0.0

  16. KeyValueGroupedDataset(K,V]擴展可序列化的

    一個數據集已經被用戶指定分組關鍵邏輯分組。

    一個數據集已經被用戶指定分組關鍵邏輯分組。用戶不應該建立一個KeyValueGroupedDataset直接,但應該調用groupByKey在現有的數據集

    2.0.0

  17. 特征LowPrioritySQLImplicits擴展AnyRef

    Scala對象轉化為低優先級的隱式方法數據集年代。

    Scala對象轉化為低優先級的隱式方法數據集年代。值得一提的是衝突放置來消除歧義的決議。

    值得一提的是包括特定的原因:newProductEncoder -消除歧義列表年代都是Seq產品

  18. 觀察擴展AnyRef

    助手類來簡化使用數據集。觀察(字符串,列,列*):

    助手類來簡化使用數據集。觀察(字符串,列,列*):

    / /觀察行數(行)和最高id (maxid)數據集在寫它瓦爾觀察=觀察(“我的指標”)瓦爾observed_ds = ds。觀察(觀察、計數(點燃(1)。as (“行”)、馬克斯($“id”)。as (“maxid”)observed_ds.write.parquet (“ds.parquet”)瓦爾指標= observation.get

    收集度量標準,而第一次行動是觀察到的數據集上執行。後續行動不要修改返回的指標得到。檢索度規的通過得到塊直到第一次行動已經完成和指標可用。

    這個類不支持流媒體數據集。

    3.3.0

  19. RelationalGroupedDataset擴展AnyRef

    一組的聚合方法DataFrame,由groupBy,多維數據集orgydF4y2Ba彙總(還有)。

    一組的聚合方法DataFrame,由groupBy,多維數據集orgydF4y2Ba彙總(還有)。

    主要的方法是gg函數,該函數有多個變體。這個類還包含了一些一階統計等的意思是,總和為了方便。

    注釋
    @Stable ()

    2.0.0

    請注意

    這個類被命名為GroupedData在火花1. x。

  20. 特征擴展可序列化的

    代表一行輸出的關係操作符。

    代表一行輸出的關係操作符。允許兩個通用的訪問順序,這將招致拳擊開銷原語,以及本地原始訪問。

    無效的使用本機原始接口檢索的值為空,而不是一個用戶必須檢查isNullAt之前試圖檢索的值可能是零。

    創建一個新行,使用RowFactory.create ()在Java或Row.apply ()在Scala中。

    一個對象可以由提供字段值。例子:

    進口org.apache.spark.sql._/ /創建一個行值。行(value1, value2, value3,…)/ /創建一個連續的Seq值。Row.fromSeq (Seq(value1, value2,…))

    的值可以通過通用訪問一行訪問順序,這將招致拳擊開銷原語,以及本地原始訪問。一個通用的訪問順序的例子:

    進口org.apache.spark.sql._瓦爾行=行(1,真正的,“字符串”,)/ /行:行=[1,真的,一個字符串,零)瓦爾firstValue =行(0)/ / firstValue:任何= 1瓦爾fourthValue =行(3)/ / fourthValue:任何=零

    對於本機原始訪問,這是無效的使用本機原始接口檢索的值為空,而不是一個用戶必須檢查isNullAt之前試圖檢索的值可能是零。本機原始訪問的一個例子:

    / /使用行從前麵的示例。瓦爾firstValue = row.getInt (0)/ / firstValue: Int = 1瓦爾isNull = row.isNullAt (3)/ / isNull:布爾= true

    在Scala中,字段中對象可以提取模式匹配。例子:

    進口org.apache.spark.sql._瓦爾對= sql (“從src選擇鍵,值”).rdd。{地圖情況下行(關鍵:Int價值:字符串)= >鍵- >值}
    注釋
    @Stable ()

    1.3.0

  21. RowFactory擴展AnyRef
    注釋
    @Stable ()
  22. RuntimeConfig擴展AnyRef

    為引發運行時配置界麵。

    為引發運行時配置界麵。訪問,使用SparkSession.conf

    選項設置有自動傳播到Hadoop在I / O配置。

    注釋
    @Stable ()

    2.0.0

  23. SQLContext擴展日誌記錄可序列化的

    處理結構化數據入口點(行和列)引發1. x。

    處理結構化數據入口點(行和列)引發1. x。

    2.0的火花,這是所取代SparkSession。然而,我們在這裏保持類的向後兼容性。

    注釋
    @Stable ()

    1.0.0

  24. 文摘SQLImplicits擴展LowPrioritySQLImplicits

    隱式轉換的方法常見的Scala對象的集合數據集年代。

    隱式轉換的方法常見的Scala對象的集合數據集年代。

    1.6.0

  25. 密封的抽象的最後SaveMode擴展枚舉(SaveMode]
    注釋
    @Stable ()
  26. SparkSession擴展可序列化的Closeable日誌記錄

    入口點和數據集和DataFrame API編程火花。

    入口點和數據集和DataFrame API編程火花。

    環境中創建了這個前期(例如REPL,筆記本電腦),使用builder獲取現有的會話:

    .getOrCreate SparkSession.builder () ()

    建造者也可以用來創建一個新的會話:

    SparkSession。建築部分(“本地”).appName (“字數統計”). config (“spark.some.config.option”,“有價值”).getOrCreate ()
    注釋
    @Stable ()
  27. SparkSessionExtensions擴展AnyRef

    ::實驗::保持者注入指出SparkSession

    ::實驗::保持者注入指出SparkSession。我們不保證兼容性關於二進製兼容性和穩定來源的方法。

    現在提供以下擴展點:

    • 分析儀的規則。
    • 檢查分析規則。
    • 優化器規則。
    • 前國會預算辦公室的規則。
    • 規劃策略。
    • 自定義解析器。
    • (外部)目錄的聽眾。
    • 柱狀規則。
    • 自適應查詢階段製備規則。
    • 自適應查詢執行運行時優化規則。

    擴展可以通過調用使用withExtensionsSparkSession.Builder,例如:

    SparkSession.builder()部分(“…”). config (“…”,真正的).withExtensions{擴展= >擴展。injectResolutionRule{會話= >…}擴展。injectParser{(會話,解析器)= >…}}.getOrCreate ()

    還可以使用擴展SQL配置屬性通過設置火花spark.sql.extensions。可以設置多個擴展使用逗號分隔的列表。例如:

    SparkSession.builder()部分(“…”). config (“spark.sql.extensions”,“org.example.MyExtensions org.example.YourExtensions”).getOrCreate ()MyExtensions擴展Function1 (SparkSessionExtensions,單位){覆蓋def應用(擴展:SparkSessionExtensions):單位={擴展。injectResolutionRule{會話= >…}擴展。injectParser{(會話,解析器)= >…}}}YourExtensions擴展SparkSessionExtensionsProvider {覆蓋def應用(擴展:SparkSessionExtensions):單位={擴展。injectResolutionRule{會話= >…}extensions.injectFunction (…)}}

    請注意,沒有一個建設者應該假定注入SparkSession完全初始化和不應該接觸到會話的內部(如SessionState)。

    注釋
    @DeveloperApi () @Experimental () @Unstable ()
  28. 特征SparkSessionExtensionsProvider延伸(SparkSessionExtensions)⇒單位

    ::不穩定::

    ::不穩定::

    基本特征實現所使用的SparkSessionExtensions

    例如,現在我們有一個外部函數命名年齡SparkSession登記為一個擴展:

    org.apache.spark.examples.extensions進口org.apache.spark.sql.catalyst.expressions。{CurrentDate、表達、RuntimeReplaceable, SubtractDates}情況下年齡(歲生日:表情,孩子:表達式)擴展RuntimeReplaceable {def(生日:表達式)=生日(生日、SubtractDates (CurrentDate ()))覆蓋defexprsReplaced:Seq(表達式)=Seq(生日)覆蓋受保護的defwithNewChildInternal (newChild:表達式):表達=複製(newChild)}

    我們需要創建擴展繼承SparkSessionExtensionsProvider例子:

    org.apache.spark.examples.extensions進口org.apache.spark.sql。{SparkSessionExtensions, SparkSessionExtensionsProvider}進口org.apache.spark.sql.catalyst.FunctionIdentifier進口org.apache.spark.sql.catalyst.expressions。{表達式,ExpressionInfo}MyExtensions擴展SparkSessionExtensionsProvider {覆蓋def應用(v1: SparkSessionExtensions):單位= {v1。injectFunction ((FunctionIdentifier (“年齡”),名為[時代]. getname classOf ExpressionInfo (“年齡”),(孩子們:Seq(表達式))= >年齡(children.head)))}}

    然後,我們可以注入MyExtensions在三個方麵,

    • withExtensions的SparkSession.Builder
    • 配置——spark.sql.extensions
    • java.util.ServiceLoader——添加到src / main / resources / meta - inf /服務/ org.apache.spark.sql.SparkSessionExtensionsProvider
    注釋
    @DeveloperApi () @Unstable () @Since (“3.2.0”)

    3.2.0

    另請參閱

    SparkSessionExtensions

    SparkSession.Builder

    java.util.ServiceLoader

  29. 類型策略=SparkStrategy

    將一個邏輯計劃轉化為零個或多個SparkPlans。

    將一個邏輯計劃轉化為零個或多個SparkPlans。這個API暴露實驗的查詢計劃並不是為了在火花版本是穩定的。開發人員編寫庫應該考慮使用提供的穩定的apiorg.apache.spark.sql.sources

    注釋
    @DeveloperApi () @Unstable ()
  30. TypedColumn(- t,U]擴展

    一個在一個編碼器給出了預期的輸入和返回類型。

    一個在一個編碼器給出了預期的輸入和返回類型。創建一個TypedColumn,可以使用作為函數在一個

    T

    這個表達式的輸入類型的預期。可以任何如果表達式類型檢查分析儀,而不是編譯器(即。expr(“總和(…)”))。

    U

    這一列的輸出類型。

    注釋
    @Stable ()

    1.6.0

  31. UDFRegistration擴展日誌記錄

    注冊用戶自定義函數的功能。

    注冊用戶自定義函數的功能。使用SparkSession.udf訪問:

    spark.udf
    注釋
    @Stable ()

    1.3.0

  32. 特征WriteConfigMethods(R]擴展AnyRef

    配置方法共同創建/替換操作,插入/重寫操作。

    配置方法共同創建/替換操作,插入/重寫操作。

    R

    建設者類型返回

    3.0.0

值的成員

  1. 對象編碼器

    方法來創建一個編碼器

    方法來創建一個編碼器

    1.6.0

  2. 對象觀察

    (Scala-specific)通過Scala創建實例的觀察應用

    (Scala-specific)通過Scala創建實例的觀察應用

    3.3.0

  3. 對象擴展可序列化的

    注釋
    @Stable ()

    1.3.0

  4. 對象SQLContext擴展可序列化的

    這個SQLContext對象包含實用函數來創建一個單例SQLContext實例,或者獲取SQLContext創建實例。

    這個SQLContext對象包含實用函數來創建一個單例SQLContext實例,或者獲取SQLContext創建實例。

    它還提供了實用函數支持偏好對於線程在多個會話場景,setActive可以設置一個SQLContext當前線程,將返回getOrCreate全球而不是一個。

  5. 對象SparkSession擴展日誌記錄可序列化的
    注釋
    @Stable ()
  6. 對象功能

    常用的函數用於DataFrame操作。

    常用的函數用於DataFrame操作。使用函數定義在這裏提供一些編譯時安全,確保功能的存在。

    火花也包括很多不常見的內置函數,在這裏沒有定義。你仍然可以訪問它們(和)所定義的所有函數使用functions.expr ()API和通過SQL表達式字符串調用它們。你可以找到整個列表的函數在火花的SQL API文檔的版本,也看到最新的列表

    作為一個例子,isnan這裏是一個函數定義。您可以使用isnan(坳(“myCol”))來調用isnan函數。這樣的編程語言的編譯器保證isnan存在,是合適的形式。您還可以使用expr (“isnan (myCol)”)函數調用相同的函數。在這種情況下,火花本身將確保isnan存在分析查詢。

    regr_count是一個函數的一個例子是內置的,但沒有定義,因為它是不常用的。調用它,使用expr (“regr_count (yCol xCol)”)

    這個函數api通常有方法隻是因為它不僅可以支持簽名還有其他類型如原生字符串。目前由於曆史原因存在的其他變體。

    注釋
    @Stable ()

    1.3.0

繼承自AnyRef

繼承自任何

未分組的

Baidu
map