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

打破二八法則!每個數(shù)據(jù)科學(xué)家都得會一點SparkMagic

大數(shù)據(jù) Spark
商業(yè)數(shù)據(jù)科學(xué)家80%的時間都花在查找、清洗和準(zhǔn)備數(shù)據(jù)上,這是數(shù)據(jù)科學(xué)家工作中效率最低也是最可怕的部分。互聯(lián)網(wǎng)為如何打破數(shù)據(jù)科學(xué)的80/20定律提供了許多的意見,但卻收效甚微。

著名的帕累托法則,即80/20定律,告訴我們:原因和結(jié)果、投入和產(chǎn)出、努力和報酬之間存在著無法解釋的不平衡。即使是21世紀(jì)最具吸引力的工作,數(shù)據(jù)科學(xué)依然逃不脫這一定律。

商業(yè)數(shù)據(jù)科學(xué)家80%的時間都花在查找、清洗和準(zhǔn)備數(shù)據(jù)上,這是數(shù)據(jù)科學(xué)家工作中效率最低也是最可怕的部分?;ヂ?lián)網(wǎng)為如何打破數(shù)據(jù)科學(xué)的80/20定律提供了許多的意見,但卻收效甚微。

其實,數(shù)據(jù)科學(xué)家生產(chǎn)率低下的主要原因在于數(shù)據(jù)準(zhǔn)備工作的雙重性:

  • 快速訪問、合并和聚合存儲在企業(yè)數(shù)據(jù)湖中的大數(shù)據(jù)
  • 探索和可視化數(shù)據(jù)中具有復(fù)雜依賴關(guān)系的Python數(shù)據(jù)包中的數(shù)據(jù)和統(tǒng)計信息

大數(shù)據(jù)大多是非結(jié)構(gòu)化的,常常存儲在具有企業(yè)管理和安全限制的生產(chǎn)環(huán)境中??焖僭L問數(shù)據(jù)需要昂貴的分布式系統(tǒng),這些系統(tǒng)由IT集中管理,必須與其他數(shù)據(jù)科學(xué)家和分析師共享。

Spark是用于分布式數(shù)據(jù)湖中處理數(shù)據(jù)的行業(yè)黃金標(biāo)準(zhǔn)。但是,要以經(jīng)濟(jì)高效的方式使用Spark集群,甚至允許多租戶,就很難滿足單個需求和依賴關(guān)系。分布式數(shù)據(jù)基礎(chǔ)架構(gòu)的行業(yè)趨勢是臨時集群,這使得數(shù)據(jù)科學(xué)家更加難以部署和管理他們的Jupyter Notebook環(huán)境。

 

打破二八法則!每個數(shù)據(jù)科學(xué)家都得會一點SparkMagic
圖源:CC BY-SA 3.0

很多數(shù)據(jù)科學(xué)家都在高規(guī)格筆記本電腦上進(jìn)行本地工作,可以更加輕松地安裝和持久保存Jupyter Notebook環(huán)境。那么這些數(shù)據(jù)科學(xué)家們?nèi)绾螌⑵浔镜亻_發(fā)環(huán)境與生產(chǎn)數(shù)據(jù)湖中的數(shù)據(jù)聯(lián)系起來?通常,他們使用Spark實現(xiàn)了csv文件,并從云存儲控制臺下載了它們。

從云存儲控制臺手動下載csv文件既不高效,也沒有特別強大的功能。如果能以終端用戶友好且透明的方式無縫地將本地的Jupyter Notebook與遠(yuǎn)程集群連接起來,豈不是更好嗎?

學(xué)好SparkMagic,打破數(shù)據(jù)科學(xué)二八法則的時間到了!

適用于Jupyter NoteBook的SparkMagic

Sparkmagic是一個通過Livy REST API與Jupyter Notebook中的遠(yuǎn)程Spark群集進(jìn)行交互工作的項目。它提供了一組Jupyter Notebook單元魔術(shù)和內(nèi)核,可將Jupyter變成用于遠(yuǎn)程集群的集成Spark環(huán)境。

 

打破二八法則!每個數(shù)據(jù)科學(xué)家都得會一點SparkMagic
合理使用和公共領(lǐng)域圖標(biāo)和svg | 圖源:MIT

SparkMagic能夠:

  • 以多種語言運行Spark代碼
  • 提供可視化的SQL查詢
  • 輕松訪問Spark應(yīng)用程序日志和信息
  • 針對任何遠(yuǎn)程Spark集群自動創(chuàng)建帶有SparkContext和HiveContext的SparkSession
  • 將Spark查詢的輸出捕獲為本地Pandas數(shù)據(jù)框架,以輕松與其他Python庫進(jìn)行交互(例如matplotlib)
  • 發(fā)送本地文件或Pandas數(shù)據(jù)幀到遠(yuǎn)程集群(例如,將經(jīng)過預(yù)訓(xùn)練的本地ML模型直接發(fā)送到Spark集群)

可以使用以下Dockerfile來構(gòu)建具有SparkMagic支持的Jupyter Notebook:

  1. FROM jupyter/all-spark-notebook:7a0c7325e470USER$NB_USER 
  2. RUN pip install --upgrade pip 
  3. RUN pip install --upgrade --ignore-installed setuptools 
  4. RUN pip install pandas --upgrade 
  5. RUN pip install sparkmagic 
  6. RUN mkdir /home/$NB_USER/.sparkmagic 
  7. RUN wget https://raw.githubusercontent.com/jupyter-incubator/sparkmagic/master/sparkmagic/example_config.json 
  8. RUN mv example_config.json /home/$NB_USER/.sparkmagic/config.json 
  9. RUN sed -i 's/localhost:8998/host.docker.internal:9999/g'/home/$NB_USER/.sparkmagic/config.json 
  10. RUN jupyter nbextension enable --py --sys-prefix widgetsnbextension 
  11. RUN jupyter-kernelspec install --user --name SparkMagic $(pip show sparkmagic |grep Location | cut -d" " -f2)/sparkmagic/kernels/sparkkernel 
  12. RUN jupyter-kernelspec install --user --name PySparkMagic $(pip show sparkmagic| grep Location | cut -d" " -f2)/sparkmagic/kernels/pysparkkernel 
  13. RUN jupyter serverextension enable --py sparkmagic 
  14. USER root 
  15. RUN chown $NB_USER /home/$NB_USER/.sparkmagic/config.json 
  16. CMD ["start-notebook.sh","--NotebookApp.iopub_data_rate_limit=1000000000"
  17. USER $NB_USER 

生成圖像并用以下代碼標(biāo)記:

  1. docker build -t sparkmagic 

并在Spark Magic支持下啟動本地Jupyter容器,以安裝當(dāng)前工作目錄:

  1. docker run -ti --name\"${PWD##*/}-pyspark\" -p 8888:8888 --rm -m 4GB --mounttype=bind,source=\"${PWD}\",target=/home/jovyan/work sparkmagic 

為了能夠連接到遠(yuǎn)程Spark集群上的Livy REST API,必須在本地計算機上使用ssh端口轉(zhuǎn)發(fā)。獲取你的遠(yuǎn)程集群的IP地址并運行:

  1. ssh -L 0.0.0.0:9999:localhost:8998REMOTE_CLUSTER_IP 

首先,使用啟用了SparkMagic的PySpark內(nèi)核創(chuàng)建一個新的Notebook,如下所示:

 

打破二八法則!每個數(shù)據(jù)科學(xué)家都得會一點SparkMagic

在啟用了SparkMagic的Notebook中,你可以使用一系列單元魔術(shù)來在本地筆記本電腦以及作為集成環(huán)境的遠(yuǎn)程Spark集群中使用。%% help魔術(shù)輸出所有可用的魔術(shù)命令:

 

打破二八法則!每個數(shù)據(jù)科學(xué)家都得會一點SparkMagic

可以使用%%configuremagic配置遠(yuǎn)程Spark應(yīng)用程序:

 

打破二八法則!每個數(shù)據(jù)科學(xué)家都得會一點SparkMagic

如圖所示,SparkMagic自動啟動了一個遠(yuǎn)程PySpark會話,并提供了一些有用的鏈接以連接到Spark UI和日志。

Notebook集成了2種環(huán)境:

  • %%local,可在筆記本電腦和jupyter docker映像提供的anaconda環(huán)境中本地執(zhí)行單元
  • %%spark,通過遠(yuǎn)程Spark集群上的PySpark REPL,再通過Livy REST API遠(yuǎn)程執(zhí)行單元

首先將以下code cell遠(yuǎn)程導(dǎo)入SparkSql數(shù)據(jù)類型;其次,它使用遠(yuǎn)程SparkSession將Enigma-JHU Covid-19數(shù)據(jù)集加載到我們的遠(yuǎn)程Spark集群中??梢栽贜otebook中看到remote .show()命令的輸出:

 

打破二八法則!每個數(shù)據(jù)科學(xué)家都得會一點SparkMagic

但這就是魔術(shù)開始的地方。可以將數(shù)據(jù)框注冊為Hive表,并使用%%sql魔術(shù)對遠(yuǎn)程群集上的數(shù)據(jù)執(zhí)行Hive查詢,并在本地Notebook中自動顯示結(jié)果。這不是什么高難度的事,但對于數(shù)據(jù)分析人員和數(shù)據(jù)科學(xué)項目早期的快速數(shù)據(jù)探索而言,這非常方便。

 

打破二八法則!每個數(shù)據(jù)科學(xué)家都得會一點SparkMagic

SparkMagic真正有用之處在于實現(xiàn)本地Notebook和遠(yuǎn)程群集之間無縫傳遞數(shù)據(jù)。數(shù)據(jù)科學(xué)家的日常挑戰(zhàn)是在與臨時集群合作以與其公司的數(shù)據(jù)湖進(jìn)行交互的同時,創(chuàng)建并保持其Python環(huán)境。

在下例中,我們可以看到如何將seaborn導(dǎo)入為本地庫,并使用它來繪制covid_data pandas數(shù)據(jù)框。

這些數(shù)據(jù)從何而來?它是由遠(yuǎn)程Spark集群創(chuàng)建并發(fā)送的。神奇的%%spark-o允許我們定義一個遠(yuǎn)程變量,以在單元執(zhí)行時轉(zhuǎn)移到本地筆記本上下文。我們的變量covid_data是一個遠(yuǎn)程集群上的SparkSQL Data Frame,和一個本地JupyterNotebook中的PandasDataFrame。

 

打破二八法則!每個數(shù)據(jù)科學(xué)家都得會一點SparkMagic

使用Pandas在Jupyter Notebook中聚合遠(yuǎn)程集群中的大數(shù)據(jù)以在本地工作的能力對于數(shù)據(jù)探索非常有幫助。例如,使用Spark將直方圖的數(shù)據(jù)預(yù)匯總為bins,以使用預(yù)匯總的計數(shù)和簡單的條形圖在Jupyter中繪制直方圖。

另一個有用的功能是能夠使用魔術(shù)%%spark-o covid_data -m sample -r 0.5來采樣遠(yuǎn)程Spark DataFrame。集成環(huán)境還允許你使用神奇的%%send_to_spark將本地數(shù)據(jù)發(fā)送到遠(yuǎn)程Spark集群。

 

[[330301]]
圖源:pexels

PandasDataFrames和字符串支持的兩種數(shù)據(jù)類型。要將其他更多或更復(fù)雜的東西(例如,經(jīng)過訓(xùn)練的scikit模型用于評分)發(fā)送到遠(yuǎn)程Spark集群,可以使用序列化創(chuàng)建用于傳輸?shù)淖址硎拘问剑?/p>

  1. import pickle 
  2. import gzip 
  3. import base64serialised_model = base64.b64encode( 
  4.     gzip.compress( 
  5.        pickle.dumps(trained_scikit_model) 
  6.     ) 
  7. ).decode() 

但正如你所見,這種短暫的PySpark集群模式有一大詬?。菏褂肞ython軟件包引導(dǎo)EMR集群,且這個問題不會隨著部署生產(chǎn)工作負(fù)載而消失。

快將自己的生產(chǎn)力從數(shù)據(jù)準(zhǔn)備的低效率中拯救出來吧,用80%中節(jié)省出來的時間去創(chuàng)造更多價值。

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2017-08-04 15:53:10

大數(shù)據(jù)真?zhèn)螖?shù)據(jù)科學(xué)家

2020-09-29 17:15:41

數(shù)據(jù)科學(xué)技術(shù)

2020-06-28 07:46:34

MLDB數(shù)據(jù)庫機器學(xué)習(xí)

2020-10-31 22:04:39

統(tǒng)計和數(shù)據(jù)科學(xué)數(shù)據(jù)科學(xué)家

2016-09-22 16:30:17

ITPythonSQL queries

2018-03-01 14:30:22

數(shù)據(jù)科學(xué)概率分布

2012-12-26 10:51:20

數(shù)據(jù)科學(xué)家

2018-11-19 06:00:32

數(shù)據(jù)科學(xué)家數(shù)據(jù)科學(xué)

2018-12-24 08:37:44

數(shù)據(jù)科學(xué)家數(shù)據(jù)模型

2012-12-06 15:36:55

CIO

2020-11-02 13:44:35

算法數(shù)據(jù)科學(xué)Python

2021-03-17 08:27:23

數(shù)據(jù)科學(xué)家數(shù)據(jù)科學(xué)

2018-02-28 15:03:03

數(shù)據(jù)科學(xué)家數(shù)據(jù)分析職業(yè)

2018-10-16 14:37:34

數(shù)據(jù)科學(xué)家數(shù)據(jù)分析數(shù)據(jù)科學(xué)

2020-08-23 12:26:59

數(shù)據(jù)科學(xué)家數(shù)據(jù)科學(xué)認(rèn)證數(shù)據(jù)科學(xué)

2012-06-12 09:33:59

2018-11-29 13:30:15

數(shù)據(jù)科學(xué)家項目數(shù)據(jù)

2016-10-21 19:59:43

數(shù)據(jù)科學(xué)家數(shù)據(jù)科學(xué)

2020-12-06 15:42:22

數(shù)據(jù)科學(xué)家數(shù)據(jù)科學(xué)人工智能

2012-12-27 09:52:23

數(shù)據(jù)科學(xué)家大數(shù)據(jù)
點贊
收藏

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