<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      劉淑婷

      7.Spark SQL

      1.分析SparkSQL出現(xiàn)的原因,并簡述SparkSQL的起源與發(fā)展。

       Spark SQL是Spark用來處理結(jié)構(gòu)化數(shù)據(jù)的一個模塊,它提供了一個叫作Data Frame的編程抽象結(jié)構(gòu)數(shù)據(jù)模型(即帶有Schema信息的RDD),Spark SQL作為分布式SQL查詢引擎,讓用戶可以通過SQL、DataFrame APl和DatasetAPI三種方式實現(xiàn)對結(jié)構(gòu)化數(shù)據(jù)的處理。但無論是哪種API或者是編程語言,都是基于同樣的執(zhí)行引擎,因此可以在不同的API之間隨意切換。

      SparkSOL的前身是SharkShark最初是美國加州大學(xué)伯克利分校的實驗室開發(fā)的Snark生態(tài)系統(tǒng)的組件之一 它運行在Snark系統(tǒng)之上,Shark重用了Hive的工作機制,并直接繼承了Hive的各個組件,Shark將SQL語句的轉(zhuǎn)換從MapReduce作業(yè)替換成了Spark作業(yè),雖然這樣提高了計算效率,但由于Shark過于依賴Hive,因此在版本迭代時很難添加新的優(yōu)化策略,從而限制了Spak的發(fā)展,在2014年,伯克利實驗室停止了對Shark的維護,轉(zhuǎn)向SparkSQL的開發(fā)。

      2. 簡述RDD 和DataFrame的聯(lián)系與區(qū)別。

       兩者聯(lián)系:

      RDD和DataFrame的共同特征是不可性、內(nèi)存運行、彈性、分布式計算能力。它允許用戶將結(jié)構(gòu)強加到分布式數(shù)據(jù)集合上。因此提供了更高層次的抽象。

      都是spark平臺下的分布式彈性數(shù)據(jù)集,為處理超大型數(shù)據(jù)提供便利。

      都有惰性機制,在進行創(chuàng)建、轉(zhuǎn)換,如map方法時,不會立即執(zhí)行,只有在遇到Action才會運算。

      都會根據(jù)spark的內(nèi)存情況自動緩存運算,這樣即使數(shù)據(jù)量很大,也不用擔(dān)心會內(nèi)存溢出。

      都有partition的概念。

      有許多共同的函數(shù),如filter,排序等。

      區(qū)別:

      RDD是彈性分布式數(shù)據(jù)集,數(shù)據(jù)集的概念比較強一點。容器可以裝任意類型的可序列化元素(支持泛型);

      RDD的缺點是無從知道每個元素的【內(nèi)部字段】信息。意思是下圖不知道Person對象的姓名、年齡等;

      DataFrame也是彈性分布式數(shù)據(jù)集,但是本質(zhì)上是一個分布式數(shù)據(jù)表,因此稱為分布式表更準(zhǔn)確。DataFrame每個元素不是泛型對象,而是Row對象。

      DataFrame的缺點是Spark SQL DataFrame API 不支持編譯時類型安全,因此,如果結(jié)構(gòu)未知,則不能操作數(shù)據(jù);同時,一旦將域?qū)ο筠D(zhuǎn)換為Data frame ,則域?qū)ο蟛荒苤貥?gòu)。

      3.DataFrame的創(chuàng)建與保存

      3.1 PySpark-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文件,Spark不能識別文件內(nèi)容,生成關(guān)系表

      讀取json文件,Spark可以識別文件內(nèi)容,生成對應(yīng)的關(guān)系表,還能根據(jù)不同字段的內(nèi)容判斷對應(yīng)的數(shù)據(jù)類型。

      用相同的txt或json文件,同時創(chuàng)建RDD,比較RDD與DataFrame的區(qū)別。

       rdd將直接存儲讀取到的數(shù)據(jù),不對數(shù)據(jù)進行處理,DataFrame將讀取到的數(shù)據(jù)轉(zhuǎn)為結(jié)構(gòu)信息。

       

      3.2 DataFrame的保存

      df.write.text(dir)

      df.write.json(dri)

      df.write.format("text").save(dir)

      df.write.format("json").save(dir)

      df.write.format("json").save(dir)

       

       

       

      4. PySpark-DataFrame各種常用操作

      基于df的操作:

      打印數(shù)據(jù) df.show()默認打印前20條數(shù)據(jù)

      打印概要 df.printSchema()

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

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

      輸出全部行 df.collect() #list類型,list中每個元素是Row類查詢概況 df.describe().show()

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

      選擇 df.select() 每個人的年齡+1

      篩選 df.filter() 20歲以上的人員信息

      篩選年齡為空的人員信息

      分組df.groupBy() 統(tǒng)計每個年齡的人數(shù)

      排序df.sortBy() 按年齡進行排序

       

       

      基于spark.sql的操作:

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

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

       

      5. Pyspark中DataFrame與pandas中DataFrame

      分別從文件創(chuàng)建DataFrame

      比較兩者的異同 

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

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

       

       

       

       

       

       

       

       

      6.從RDD轉(zhuǎn)換得到DataFrame

      6.1 利用反射機制推斷RDD模式

      創(chuàng)建RDD sc.textFile(url).map(),讀文件,分割數(shù)據(jù)項

      每個RDD元素轉(zhuǎn)換成 Row

      由Row-RDD轉(zhuǎn)換到DataFrame

       

       

       

      6.2 使用編程方式定義RDD模式

      #下面生成“表頭” 

      #下面生成“表中的記錄” 

      #下面把“表頭”和“表中的記錄”拼裝在一起

       

       

      4.選擇題

      1單選(2分)?關(guān)于Shark,下面描述正確的是:C

      A.Shark提供了類似Pig的功能

      B.Shark把SQL語句轉(zhuǎn)換成MapReduce作業(yè)

      C.Shark重用了Hive中的HiveQL解析、邏輯執(zhí)行計劃翻譯、執(zhí)行計劃優(yōu)化等邏輯

      D.Shark的性能比Hive差很多

       

      2單選(2分)?下面關(guān)于Spark SQL架構(gòu)的描述錯誤的是:D

      A.在Shark原有的架構(gòu)上重寫了邏輯執(zhí)行計劃的優(yōu)化部分,解決了Shark存在的問題

      B.Spark SQL在Hive兼容層面僅依賴HiveQL解析和Hive元數(shù)據(jù)

      C.Spark SQL執(zhí)行計劃生成和優(yōu)化都由Catalyst(函數(shù)式關(guān)系查詢優(yōu)化框架)負責(zé)

      D.Spark SQL執(zhí)行計劃生成和優(yōu)化需要依賴Hive來完成

       

      3單選(2分)?要把一個DataFrame保存到people.json文件中,下面語句哪個是正確的:A

      A.df.write.json("people.json")

      B.df.json("people.json")

      C.df.write.format("csv").save("people.json")

      D.df.write.csv("people.json")

       

      4多選(3分)?Shark的設(shè)計導(dǎo)致了兩個問題:AC

      A.執(zhí)行計劃優(yōu)化完全依賴于Hive,不方便添加新的優(yōu)化策略

      B.執(zhí)行計劃優(yōu)化不依賴于Hive,方便添加新的優(yōu)化策略

      C.Spark是線程級并行,而MapReduce是進程級并行,因此,Spark在兼容Hive的實現(xiàn)上存在線程安全問題,導(dǎo)致Shark不得不使用另外一套獨立維護的、打了補丁的Hive源碼分支

      D.Spark是進程級并行,而MapReduce是線程級并行,因此,Spark在兼容Hive的實現(xiàn)上存在線程安全問題,導(dǎo)致Shark不得不使用另外一套獨立維護的、打了補丁的Hive源碼分支

       

      5 多選(3分)?下面關(guān)于為什么推出Spark SQL的原因的描述正確的是:AB

      A.Spark SQL可以提供DataFrame API,可以對內(nèi)部和外部各種數(shù)據(jù)源執(zhí)行各種關(guān)系操作

      B.可以支持大量的數(shù)據(jù)源和數(shù)據(jù)分析算法,組合使用Spark SQL和Spark MLlib,可以融合傳統(tǒng)關(guān)系數(shù)據(jù)庫的結(jié)構(gòu)化數(shù)據(jù)管理能力和機器學(xué)習(xí)算法的數(shù)據(jù)處理能力

      C.Spark SQL無法對各種不同的數(shù)據(jù)源進行整合

      D.Spark SQL無法融合結(jié)構(gòu)化數(shù)據(jù)管理能力和機器學(xué)習(xí)算法的數(shù)據(jù)處理能力

       

      6多選(3分)?下面關(guān)于DataFrame的描述正確的是:ABCD

      A.DataFrame的推出,讓Spark具備了處理大規(guī)模結(jié)構(gòu)化數(shù)據(jù)的能力

      B.DataFrame比原有的RDD轉(zhuǎn)化方式更加簡單易用,而且獲得了更高的計算性能

      C.Spark能夠輕松實現(xiàn)從MySQL到DataFrame的轉(zhuǎn)化,并且支持SQL查詢

      D.DataFrame是一種以RDD為基礎(chǔ)的分布式數(shù)據(jù)集,提供了詳細的結(jié)構(gòu)信息

       

      7多選(3分)?要讀取people.json文件生成DataFrame,可以使用下面哪些命令:AC

      A.spark.read.json("people.json")

      B.spark.read.parquet("people.json")

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

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

       

      8單選(2分)以下操作中,哪個不是DataFrame的常用操作:D

      A.printSchema()

      B.select()

      C.filter()

      D.sendto()

       

      9多選(3分)?從RDD轉(zhuǎn)換得到DataFrame包含兩種典型方法,分別是:AB

      A.利用反射機制推斷RDD模式

      B.使用編程方式定義RDD模式

      C.利用投影機制推斷RDD模式

      D.利用互聯(lián)機制推斷RDD模式

       

      10多選(3分)?使用編程方式定義RDD模式時,主要包括哪三個步驟:ABD

      A.制作“表頭”

      B.制作“表中的記錄”

      C.制作映射表

      D.把“表頭”和“表中的記錄”拼裝在一起

      posted on 2022-05-10 18:29  樹亭  閱讀(137)  評論(0)    收藏  舉報

      導(dǎo)航

      主站蜘蛛池模板: аⅴ天堂国产最新版在线中文| 亚洲精品无码你懂的| 国产av丝袜旗袍无码网站| 国产一区二区精品自拍| 久久蜜臀av一区三区| 亚洲精品午夜精品| 国产日韩入口一区二区| 丁香五月亚洲综合在线| 色综合久久天天综线观看| 精品九九人人做人人爱| 国产精品无码制服丝袜| AI做受???高潮AAAA视频| 免费无码一区无码东京热| 玩弄放荡人妻少妇系列 | 丰满无码人妻热妇无码区| 亚洲人成色7777在线观看不卡| 亚洲中文字幕日产无码成人片| 一本精品99久久精品77| 成人片黄网站色大片免费| 亚洲 另类 小说 国产精品无码| 亚洲精品日韩精品久久| 老女老肥熟国产在线视频| 中文字幕久区久久中文字幕| 日本福利一区二区精品| 在线观看国产午夜福利片| 日韩有码中文字幕国产| 人妻内射一区二区在线视频| 中文字幕v亚洲日本在线电影 | 最新国产精品好看的精品| 天海翼激烈高潮到腰振不止| 国产熟女一区二区三区四区| 亚洲人成小说网站色在线| 如东县| 亚洲AV日韩精品久久久久| 91在线视频视频在线| 亚洲中文字幕人妻系列| 麻豆国产黄色一级免费片| 国产极品美女高潮无套| 精品国产乱码久久久久APP下载| 亚洲熟女乱色一区二区三区| 日韩丝袜人妻中文字幕|