GraphFrames初探

GraphFrames基本介紹

? ? ? ?GraphFrames,該類庫是構(gòu)建在DataFrame之上,它既能利用DataFrame良好的擴展性和強大的性能,同時也為Scala、Java和Python提供了統(tǒng)一的圖處理API。GraphX基于RDD API,不支持Python API; 但GraphFrame基于DataFrame,并且支持Python API。

? ? ? ?與Apache Spark的GraphX類似,GraphFrames支持多種圖處理功能,但得益于DataFrame因此GraphFrames與GraphX庫相比有著下面幾方面的優(yōu)勢:

1、統(tǒng)一的 API: 為Python、Java和Scala三種語言提供了統(tǒng)一的接口,這是Python和Java首次能夠使用GraphX的全部算法。

2、強大的查詢功能:GraphFrames使得用戶可以構(gòu)建與Spark SQL以及DataFrame類似的查詢語句。

3、圖的存儲和讀?。篏raphFrames與DataFrame的數(shù)據(jù)源完全兼容,支持以Parquet、JSON以及CSV等格式完成圖的存儲或讀取。

  在GraphFrames中圖的頂點(Vertex)和邊(Edge)都是以DataFrame形式存儲的,所以一個圖的所有信息都能夠完整保存。

GraphFrames與GraphX的集成

? ? ? ?GraphFrames可以實現(xiàn)與GraphX的完美集成。兩者之間相互轉(zhuǎn)換時不會丟失任何數(shù)據(jù)。

val graph = Graph(...)

val graphFrame =GraphFrame.fromGraphX(graph)

一、安裝anaconda3

1.1、選擇版本

anaconda3-5.2.0

參考:https://blog.csdn.net/yuejisuo1948/article/details/81043823

1.2、獲取資源

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.2.0-Linux-x86_64.sh

sh?Anaconda3-5.2.0-Linux-x86_64.sh

export PATH=/data/install/anaconda3/bin:$PATH

參考:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

二、安裝graphframes

2.1、下載graphframes包

官方下載地址:https://spark-packages.org/package/graphframes/graphframes,下載zip格式,上傳至服務器。

2.2、在服務器上解壓1中的壓縮包,unzip xx.zip

將/python/graphframes文件夾拷貝到anaconda3/lib/python/site-package/路徑下。

unzip?graphframes-0.6.0-spark2.2-s_2.11.zip

cp -rf ./graphframes-0.6.0-spark2.2-s_2.11/python/graphframes ./anaconda3/lib/python3.6/site-packages

三、安裝pyspark?

版本需要和spark版本匹配,spark2.2.0 <=> pyspark2.1.2

conda install pyspark==2.2.1

四、安裝完畢

示例代碼:

demo代碼
交互式運行圖

上圖為python交互運行GraphFrameDemo代碼案例;

python腳本直接執(zhí)行:

cd? /data/install/jupyter_namespace/public/

/data/install/anaconda3/bin/python GraphFrameDemo.py

python 提交運行圖

spark-submit提交運行

spark-submit \

--master yarn \

--deploy-mode client \

--num-executors 6 \

--driver-memory 1g \

--executor-memory 1g \

--executor-cores 1 \

GraphFrameDemo.py

spark-submit 提交運行圖

五、安裝啟動簡易juypter

啟動anaconda3-5.2.0自帶jupyter,linux服務器配置jupyter,然后遠程使用jupyter。

5.1、 進入環(huán)境ipython, 在ipython環(huán)境下輸入:

from notebook.auth import passwd

passwd()

# 輸入方便你記的密碼,連續(xù)輸;兩次..輸完密碼后,會輸出一個字符串,形如: ’sha1:9e7a5c5e0a29:8cbdvsv2344d141c92beab1c5bc6e9avsdvdsvsv’

# 將其保存下來, 完成以上操作后,通過exit()推出ipython環(huán)境

5.2、進入到用戶根目錄:

cd?/data/install/jupyter_namespace/public/

/data/install/anaconda3/bin/jupyter notebook --generate-config

#(命令會產(chǎn)生文件:/data/install/anaconda3/jupyter_namespace/public/jupyter_notebook_config.py)

5.3、編輯配置文件,編輯此文件,寫入

c.NotebookApp.ip = '*' # 允許訪問此服務器的 IP,星號表示任意 IP

c.NotebookApp.password = u'sha1:81c56f4992cc:c39ab21d485bb4a58f77b77eec8c022d283de286' # 之前生成的密碼 hash 字串

c.NotebookApp.open_browser = False # 運行時不打開本機瀏覽器

c.NotebookApp.port = 8881 # 使用的端口,隨意設置

c.NotebookApp.enable_mathjax = True # 啟用 MathJax

c.NotebookApp.notebook_dir = '/data/install/jupyter_namespace/public'

5.4、啟動服務

普通用戶啟動:jupyter notebook?

超級用戶啟動:jupyter notebook --allow-root

指定配置文件啟動:

nohup /data/install/anaconda3/bin/jupyter notebook --allow-root --config jupyter_notebook_config_public.py &

5.5、遠程登錄使用GraphFrames


注意事項:

保證集群各機器,spark-python版本一致

export PYSPARK_DRIVER_PYTHON=/data/install/anaconda3/bin/python3

export PYSPARK_PYTHON=/data/install/anaconda3/bin/python3

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容