Spark SQL(一)之简介
Spark SQL是用于結構化數據處理的Spark模塊。與基本的Spark RDD API不同,Spark SQL提供的接口為Spark提供了有關數據結構和正在執行的計算的更多信息。在內部,Spark SQL使用這些額外的信息來執行額外的優化。
與Spark SQL交互的方法有多種,包括SQL和Dataset API。計算結果時,將使用相同的執行引擎,而與要用來表達計算的API /語言無關。
?
一、SparkSession
SparkSession類是Spark中所有功能的入口點。要創建一個基本的SparkSession,只需使用SparkSession.builder()創建。
SparkSession spark = SparkSession.builder().appName("Spark SQL").master("local[4]").getOrCreate();二、Dataset
Dataset是數據的分布式集合。數據集是Spark 1.6中添加的新接口,它具有RDD的優點(強類型輸入,使用強大的lambda函數的能力)以及Spark SQL的優化執行引擎的優點。Dataset可以被構造從JVM對象,然后使用功能性的轉換(操作map,flatMap,filter等等)。
Dataset API在Scala和?Java中可用。Python不支持Dataset API。但是由于Python的動態特性,Dataset API的許多優點已經可用(即,您可以自然地通過名稱訪問行的字段?row.columnName)。R的情況與此類似。
DataFrame是數據格式為Row的Dataset。從概念上講,它等效于關系數據庫中的表或R / Python中的數據框,但是在后臺進行了更豐富的優化。可以從多種來源構造DataFrame,例如:結構化數據文件,Hive中的表,外部數據庫或現有的RDD。DataFrame API在Scala,Java,Python和R中可用。在Scala和Java中,DataFrame由的數據集表示Row。在Scala API中,DataFrame只是類型別名Dataset[Row]。而在Java API中,用戶需要使用Dataset<Row>來代表DataFrame。
在整個文檔中,我們通常將的Scala / Java的Dataset<Row>稱為DataFrames。
Dataset<Row> df = spark.read().json("/test.json");?
總結
以上是生活随笔為你收集整理的Spark SQL(一)之简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Scala与Java差异(六)之类定义
- 下一篇: 妹子用手机轻松直播K歌,四种模式支持混响