自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL、Pandas和Spark:這個庫,實現(xiàn)了三大數(shù)據(jù)分析工具的大一統(tǒng)

數(shù)據(jù)庫 Spark
由于Spark是基于Scala語言實現(xiàn)的大數(shù)據(jù)組件,而Scala語言又是運行在JVM虛擬機上的,所以Spark自然依賴JDK,截止目前為止JDK8依然可用,而且?guī)缀跏前惭b各大數(shù)據(jù)組件時的首選。所以搭建pyspark環(huán)境首先需要安裝JDK8,而后這里介紹兩種方式搭建pyspark運行環(huán)境。

 

01 pyspark簡介及環(huán)境搭建

pyspark是python中的一個第三方庫,相當于Apache Spark組件的python化版本(Spark當前支持Java Scala Python和R 4種編程語言接口),需要依賴py4j庫(即python for java的縮略詞),而恰恰是這個庫實現(xiàn)了將python和java的互聯(lián),所以pyspark庫雖然體積很大,大約226M,但實際上絕大部分都是spark中的原生jar包,占據(jù)了217M,體積占比高達96%。

由于Spark是基于Scala語言實現(xiàn)的大數(shù)據(jù)組件,而Scala語言又是運行在JVM虛擬機上的,所以Spark自然依賴JDK,截止目前為止JDK8依然可用,而且?guī)缀跏前惭b各大數(shù)據(jù)組件時的首選。所以搭建pyspark環(huán)境首先需要安裝JDK8,而后這里介紹兩種方式搭建pyspark運行環(huán)境:

1)pip install pyspark+任意pythonIDE

pyspark作為python的一個第三方庫,自然可以通過pip包管理工具進行安裝,所以僅需執(zhí)行如下命令即可完成自動安裝:

 

  1. pip install pyspark 

為了保證更快的下載速度,可以更改pip源為國內(nèi)鏡像,具體設(shè)置方式可參考歷史文章:是時候總結(jié)一波Python環(huán)境搭建問題了

2)Spark官網(wǎng)下載指定tar包解壓

與其他大數(shù)據(jù)組件不同,Spark實際上提供了windows系統(tǒng)下良好的兼容運行環(huán)境,而且方式也非常簡單。訪問spark官網(wǎng),選擇目標版本(當前最新版本是spark3.1.1版本),點擊鏈接即可跳轉(zhuǎn)到下載頁面,不出意外的話會自動推薦國內(nèi)鏡像下載地址,所以下載速度是很有保證的。

 

 

 

 

下載完畢后即得到了一個tgz格式的文件,移動至適當目錄直接解壓即可,而后進入bin目錄,選擇打開pyspark.cmd,即會自動創(chuàng)建一個pyspark的shell運行環(huán)境,整個過程非常簡單,無需任何設(shè)置。

 

 

 

 

進入pyspark環(huán)境,已創(chuàng)建好sc和spark兩個入口變量

兩種pyspark環(huán)境搭建方式對比:

  • 運行環(huán)境不同:pip源安裝相當于擴展了python運行庫,所以可在任何pythonIDE中引入和使用,更為靈活方便;而spark tar包解壓本質(zhì)上相當于是安裝了一個windows系統(tǒng)下的軟件,只能通過執(zhí)行該“軟件”的方式進入
  • 提供功能不同:pip源安裝方式僅限于在python語言下使用,只要可以import pyspark即可;而spark tar包解壓,則不僅提供了pyspark入口,其實還提供了spark-shell(scala版本)sparkR等多種cmd執(zhí)行環(huán)境;
  • 使用方式不同:pip源安裝需要在使用時import相應(yīng)包,并手動創(chuàng)建sc和spark入口變量;而spark tar包解壓進入shell時,會提供已創(chuàng)建好的sc和spark入口變量,更為方便。

總體來看,兩種方式各有利弊,如果是進行正式的開發(fā)和數(shù)據(jù)處理流程,個人傾向于選擇進入第一種pyspark環(huán)境;而對于簡單的功能測試,則會優(yōu)先使用pyspark.cmd環(huán)境。

02 三大數(shù)據(jù)分析工具靈活切換

在日常工作中,我們常常會使用多種工具來實現(xiàn)不同的數(shù)據(jù)分析需求,比如個人用的最多的還是SQL、Pandas和Spark3大工具,無非就是喜歡SQL的語法簡潔易用、Pandas的API豐富多樣以及Spark的分布式大數(shù)據(jù)處理能力,但同時不幸的是這幾個工具也都有各自的弱點,比如SQL僅能用于處理一些簡單的需求,復(fù)雜的邏輯實現(xiàn)不太可能;Pandas只能單機運行、大數(shù)據(jù)處理乏力;Spark接口又相對比較有限,且有些算子寫法會比較復(fù)雜。

懶惰是人類進步的階梯,這個道理在數(shù)據(jù)處理工具的選擇上也有所體現(xiàn)。

希望能在多種工具間靈活切換、自由組合選用,自然是最樸(偷)素(懶)的想法,所幸pyspark剛好能夠滿足這一需求!以SQL中的數(shù)據(jù)表、pandas中的DataFrame和spark中的DataFrame三種數(shù)據(jù)結(jié)構(gòu)為對象,依賴如下幾個接口可實現(xiàn)數(shù)據(jù)在3種工具間的任意切換:

  • spark.createDataFrame() # 實現(xiàn)從pd.DataFrame -> spark.DataFrame
  • df.toPandas() # 實現(xiàn)從spark.DataFrame -> pd.DataFrame
  • df.createOrReplaceTempView() # 實現(xiàn)從spark.DataFrame注冊為一個臨時SQL表
  • spark.sql() # 實現(xiàn)從注冊臨時表查詢得到spark.DataFrame

當然,pandas自然也可以通過pd.read_sql和df.to_sql實現(xiàn)pandas與數(shù)據(jù)庫表的序列化與反序列化,但這里主要是指在內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)的任意切換。

 

 

 

 

舉個小例子:

1)spark創(chuàng)建一個DataFrame

 

 

 

 

2)spark.DataFrame轉(zhuǎn)換為pd.DataFrame

 

 

 

 

3)pd.DataFrame轉(zhuǎn)換為spark.DataFrame

 

 

 

 

4)spark.DataFrame注冊臨時數(shù)據(jù)表并執(zhí)行SQL查詢語句

 

 

 

 

暢想一下,可以在三種數(shù)據(jù)分析工具間任意切換使用了,比如在大數(shù)據(jù)階段用Spark,在數(shù)據(jù)過濾后再用Pandas的豐富API,偶爾再來幾句SQL!然而,理想很豐滿現(xiàn)實則未然:期間踩坑之深之廣,冷暖自知啊……

 

責(zé)任編輯:華軒 來源: 小數(shù)志
相關(guān)推薦

2020-12-13 13:40:22

健康碼移動應(yīng)用

2015-07-30 12:27:30

重郵華為

2023-07-17 08:03:03

Shell腳本SQL

2017-12-15 17:14:10

云端

2015-05-06 13:52:52

微軟外媒

2014-07-29 13:25:43

WWDC 2014 S

2012-02-28 09:54:01

Windows 8微軟賬戶

2024-04-23 13:38:00

AI數(shù)據(jù)

2023-03-13 13:40:20

機器學(xué)習(xí)AI

2024-03-20 09:29:41

2025-03-18 09:29:54

2023-09-14 09:44:29

2023-05-10 14:58:06

開源模型

2025-03-13 10:18:42

2025-02-03 12:16:01

視頻生成AI

2023-07-22 13:17:33

人工智能框架

2024-08-26 07:40:00

AI訓(xùn)練

2024-01-24 09:24:19

自動駕駛算法

2024-12-10 09:49:53

2017-06-27 10:49:48

Intel 300Wi-Fi芯片
點贊
收藏

51CTO技術(shù)棧公眾號