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