2.安裝spark,7.Spark SQL
一、安裝Spark
1.檢查基礎(chǔ)環(huán)境
啟動(dòng)hdfs查看進(jìn)程

查看hadoop和jdk環(huán)境


2.下載spark

3.配置環(huán)境變量

4.啟動(dòng)spark

5.試運(yùn)行python代碼


7.Spark SQL
1.請分析SparkSQL出現(xiàn)的原因,并簡述SparkSQL的起源與發(fā)展。
因?yàn)殛P(guān)系數(shù)據(jù)庫已經(jīng)很流行,而且關(guān)系數(shù)據(jù)庫在大數(shù)據(jù)時(shí)代已經(jīng)不能滿足要求。首先,用戶需要從不同數(shù)據(jù)源執(zhí)行各種操作,包括結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。其次,用戶需要執(zhí)行高級分析,比如機(jī)器學(xué)習(xí)和圖像處理。在實(shí)際大數(shù)據(jù)應(yīng)用中,經(jīng)常需要融合關(guān)系查詢和復(fù)雜分析算法(比如機(jī)器學(xué)習(xí)或圖像處理),但是,缺少這樣的系統(tǒng)。
Spark SQL填補(bǔ)了這個(gè)鴻溝:首先,可以提供DataFrame API,可以對內(nèi)部和外部各種數(shù)據(jù)源執(zhí)行各種關(guān)系型操作。其次,可以支持大數(shù)據(jù)中的大量數(shù)據(jù)源和數(shù)據(jù)分析算法Spark SQL可以融合:傳統(tǒng)關(guān)系數(shù)據(jù)庫的結(jié)構(gòu)化數(shù)據(jù)管理能力和機(jī)器學(xué)習(xí)算法的數(shù)據(jù)處理能力。
2. 簡述RDD 和DataFrame的聯(lián)系與區(qū)別?
區(qū)別:
RDD是分布式的java對象的集合,但是對象內(nèi)部結(jié)構(gòu)對于RDD而言卻是不可知的。
DataFrame是一種以RDD為基礎(chǔ)的分布式數(shù)據(jù)集,提供了詳細(xì)的結(jié)構(gòu)信息,相當(dāng)于關(guān)系數(shù)據(jù)庫中的一張表。
聯(lián)系:
1.都是spark平臺下的分布式彈性數(shù)據(jù)集,為處理超大型數(shù)據(jù)提供便利。
2、都有惰性機(jī)制,在進(jìn)行創(chuàng)建、轉(zhuǎn)換,如map方法時(shí),不會立即執(zhí)行,只有在遇到Action才會運(yùn)算。
3.都會根據(jù)spark的內(nèi)存情況自動(dòng)緩存運(yùn)算,這樣即使數(shù)據(jù)量很大,也不用擔(dān)心會內(nèi)存溢出
4、三者都有partition的概念。
5.三者有許多共同的函數(shù),如filter,排序等。
3.DataFrame的創(chuàng)建
spark.read.text(url)

spark.read.json(url)

spark.read.format("text").load("people.txt")

spark.read.format("json").load("people.json")

描述從不同文件類型生成DataFrame的區(qū)別。
text文件生成的DataFrame只有value屬性;而json文件生成的DataFrame會識別到文件中的鍵值。
用相同的txt或json文件,同時(shí)創(chuàng)建RDD,比較RDD與DataFrame的區(qū)別。

相同的文件創(chuàng)建RDD和DataFrame,RDD對文件中的結(jié)構(gòu)是不可知的,而DataFrame對文件中的數(shù)據(jù)結(jié)構(gòu)是可以解析出來的。
4. PySpark-DataFrame各種常用操作
打印數(shù)據(jù) df.show()默認(rèn)打印前20條數(shù)據(jù)

打印概要 df.printSchema()

查詢總行數(shù) df.count()

df.head(3) #list類型,list中每個(gè)元素是Row類

輸出全部行 df.collect() #list類型,list中每個(gè)元素是Row類

查詢概況 df.describe().show()

取列 df[‘name’], df.name, df[1]

創(chuàng)建臨時(shí)表虛擬表 df.registerTempTable('people')

spark.sql執(zhí)行SQL語句 spark.sql('select name from people').show()

5. Pyspark中DataFrame與pandas中DataFrame
分別從文件創(chuàng)建DataFrame

比較兩者的異同
pandas創(chuàng)建的df不能使用show()函數(shù),pyspark創(chuàng)建的df可以使用show()函數(shù)
pandas中DataFrame轉(zhuǎn)換為Pyspark中DataFrame

Pyspark中DataFrame轉(zhuǎn)換為pandas中DataFrame

posted on 2022-06-06 22:52 熱心網(wǎng)友小鵬 閱讀(370) 評論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號