最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用用Pyspark和GraphX實(shí)現(xiàn)解析復(fù)雜網(wǎng)絡(luò)數(shù)據(jù)

 更新時(shí)間:2024年01月19日 08:11:45   作者:努力的DJ  
GraphX是Spark提供的圖計(jì)算API,它提供了一套強(qiáng)大的工具,這篇文章將詳細(xì)為大家介紹如何在Python?/?pyspark環(huán)境中使用graphx進(jìn)行圖計(jì)算,感興趣的可以了解下

從零開始

在本文中,我們將詳細(xì)介紹如何在Python / pyspark環(huán)境中使用graphx進(jìn)行圖計(jì)算。GraphX是Spark提供的圖計(jì)算API,它提供了一套強(qiáng)大的工具,用于處理和分析大規(guī)模的圖數(shù)據(jù)。通過結(jié)合Python / pyspark和graphx,您可以輕松地進(jìn)行圖分析和處理。

為了方便那些剛?cè)腴T的新手,包括我自己在內(nèi),我們將從零開始逐步講解。

安裝Spark和pyspark

如果你只是想單獨(dú)運(yùn)行一下pyspark的演示示例,那么只需要擁有Python環(huán)境就可以了。你可以前往官方網(wǎng)站的快速開始頁面查看詳細(xì)的指南:spark.apache.org/docs/latest/api/python/getting_started/quickstart_df.html

安裝pyspark包

pip install pyspark

由于官方省略的步驟還是相當(dāng)多的,我簡(jiǎn)單寫了一下我的成功演示示例。

from pyspark.sql import SparkSession,Row
from datetime import datetime, date
import pandas as pd
import os
os.environ['PYSPARK_PYTHON'] = "%你的Python包路徑%//python.exe"

spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame([
    Row(a=1, b=2., c='string1', d=date(2000, 1, 1), e=datetime(2000, 1, 1, 12, 0)),
    Row(a=2, b=3., c='string2', d=date(2000, 2, 1), e=datetime(2000, 1, 2, 12, 0)),
    Row(a=4, b=5., c='string3', d=date(2000, 3, 1), e=datetime(2000, 1, 3, 12, 0))
])
df.show()

然而,考慮到我們今天需要使用GraphX進(jìn)行分析,因此我們?nèi)匀恍枰惭bSpark。

安裝Spark

請(qǐng)?jiān)L問Spark官方網(wǎng)站(spark.apache.org/downloads.html )以獲取適用于您操作系統(tǒng)的最新版本,并進(jìn)行下載。如果您覺得下載速度較慢,您還可以選擇使用國(guó)內(nèi)阿里鏡像進(jìn)行下載。為了方便起見,我已經(jīng)幫您找到了相應(yīng)的鏡像地址。

國(guó)內(nèi)阿里鏡像:mirrors.aliyun.com/apache/spark/spark-3.5.0/

請(qǐng)下載帶有hadoop的版本:spark-3.5.0-bin-hadoop3.tgz。解壓縮Spark壓縮包即可

配置環(huán)境變量

在安裝Spark之前,請(qǐng)務(wù)必記住需要Java環(huán)境。請(qǐng)確保提前配置好JAVA_HOME環(huán)境變量,這樣才能正常運(yùn)行Spark。

在windows上安裝Java和Apache Spark后,設(shè)置SPARK_HOME、HADOOP_HOME和PATH環(huán)境變量。如果你知道如何在windows上設(shè)置環(huán)境變量,請(qǐng)?zhí)砑右韵聝?nèi)容:

SPARK_HOME  = C:\apps\opt\spark-3.5.0-bin-hadoop3
HADOOP_HOME = C:\apps\opt\spark-3.5.0-bin-hadoop3

在Windows上使用winutils.exe的Spark

在Windows上運(yùn)行Apache Spark時(shí),確保你已經(jīng)下載了適用于Spark版本的winutils.exe。winutils.exe是一個(gè)用于在Windows環(huán)境下模擬類似POSIX的文件訪問操作的工具,它使得Spark能夠在Windows上使用Windows特有的服務(wù)和運(yùn)行shell命令。

你可以從以下鏈接下載適用于你所使用的Spark版本的winutils.exe:github.com/kontext-tech/winutils/tree/master/hadoop-3.3.0/bin

請(qǐng)確保將下載的winutils.exe文件放置在Spark安裝目錄的bin文件夾下,以便Spark能夠正確地使用它來執(zhí)行Windows特有的操作。

Apache Spark shell

spark-shell是Apache Spark發(fā)行版附帶的命令行界面(CLI)工具,它可以通過直接雙擊或使用命令行窗口在Windows操作系統(tǒng)上運(yùn)行。此外,Spark還提供了一個(gè)Web UI界面,用于在Windows上進(jìn)行可視化監(jiān)控和管理。

請(qǐng)嘗試運(yùn)行Apache Spark shell。當(dāng)你成功運(yùn)行后,你應(yīng)該會(huì)看到一些內(nèi)容輸出(請(qǐng)忽略最后可能出現(xiàn)的警告信息)。

在啟動(dòng)Spark-shell時(shí),它會(huì)自動(dòng)創(chuàng)建一個(gè)Spark上下文的Web UI。您可以通過從瀏覽器中打開URL,訪問Spark Web UI來監(jiān)控您的工作。

GraphFrames

在前面的步驟中,我們已經(jīng)完成了所有基礎(chǔ)設(shè)施(環(huán)境變量)的配置?,F(xiàn)在,我們需要進(jìn)行一些配置來使Python腳本能夠運(yùn)行g(shù)raphx。

要使用Python / pyspark運(yùn)行g(shù)raphx,你需要進(jìn)行一些配置。接下來的示例將展示如何配置Python腳本來運(yùn)行g(shù)raphx。

GraphFrames的安裝

如需獲得更多關(guān)于GraphFrames的信息和快速入門指南,請(qǐng)?jiān)L問官方網(wǎng)站:graphframes.github.io/graphframes/docs/_site/quick-start.html

你也可以使用以下命令來安裝GraphFrames。

pip install graphframes

在繼續(xù)操作之前,請(qǐng)務(wù)必將graphframes對(duì)應(yīng)的jar包安裝到spark的jars目錄中,以避免在使用graphframes時(shí)出現(xiàn)以下錯(cuò)誤: java.lang.ClassNotFoundException: org.graphframes.GraphFramePythonAPI

將下載好的jar包放入你的%SPARK_HOME%\jars即可。

接下來,我們可以開始正常地使用graphx圖計(jì)算框架了?,F(xiàn)在,讓我們簡(jiǎn)單地瀏覽一下一個(gè)示例demo。

from pyspark.sql.types import *
from pyspark.sql import SparkSession
from pyspark import SparkContext, SparkConf
import pandas as pd
from graphframes import GraphFrame

spark_conf = SparkConf().setAppName('Python_Spark_WordCount').setMaster('local[2]') 
sc = SparkContext(conf=spark_conf)
spark=SparkSession.builder.appName("graph").getOrCreate()
v = spark.createDataFrame([
  ("a", "Alice", 34),
  ("b", "Bob", 36),
  ("c", "Charlie", 30),
], ["id", "name", "age"])

# Create an Edge DataFrame with "src" and "dst" columns
e = spark.createDataFrame([
  ("a", "b", "friend"),
  ("b", "c", "follow"),
  ("c", "b", "follow"),
], ["src", "dst", "relationship"])
# Create a GraphFrame
g = GraphFrame(v, e)

# Query: Get in-degree of each vertex.
g.inDegrees.show()

# Query: Count the number of "follow" connections in the graph.
g.edges.filter("relationship = 'follow'").count()

# Run PageRank algorithm, and show results.
results = g.pageRank(resetProbability=0.01, maxIter=20)
results.vertices.select("id", "pagerank").show()

如果運(yùn)行還是報(bào)錯(cuò):org.apache.spark.SparkException: Python worker failed to connect back

import os
os.environ['PYSPARK_PYTHON'] = "%你自己的Python路徑%//Python//python.exe"

最后大功告成:

網(wǎng)絡(luò)流量分析

接下來,我們將探討一下是否能夠?qū)W(wǎng)絡(luò)流量進(jìn)行分析。對(duì)于初學(xué)者來說,很難獲得一些有組織的日志文件或數(shù)據(jù)集,所以我們可以自己制造一些虛擬數(shù)據(jù),以便進(jìn)行演示。

首先,讓我來詳細(xì)介紹一下GraphFrame(v, e)的參數(shù):

參數(shù)v:Class,這是一個(gè)保存頂點(diǎn)信息的DataFrame。DataFrame必須包含名為"id"的列,該列存儲(chǔ)唯一的頂點(diǎn)ID。

參數(shù)e:Class,這是一個(gè)保存邊緣信息的DataFrame。DataFrame必須包含兩列,"src"和"dst",分別用于存儲(chǔ)邊的源頂點(diǎn)ID和目標(biāo)頂點(diǎn)ID。

edges=sc.textFile(r'/Users/xiaoyu/edges')
edges=edges.map(lambda x:x.split('\t'))
edges_df=spark.createDataFrame(edges,['src','dst'])

nodes=sc.textFile(r'/Users/xiaoyu/nodes')
nodes=nodes.map(lambda x:[x]) 
nodes_df=spark.createDataFrame(nodes,['id'])
graph=GraphFrame(nodes_df, edges_df)

為了創(chuàng)建圖數(shù)據(jù)結(jié)構(gòu)并進(jìn)行分析,可以簡(jiǎn)化流程,直接讀取相關(guān)文件并進(jìn)行處理。

# 計(jì)算每個(gè)節(jié)點(diǎn)的入度和出度
in_degrees = graph.inDegrees
out_degrees = graph.outDegrees

# 打印節(jié)點(diǎn)的入度和出度
in_degrees.show()
out_degrees.show()

查找具有最大入度和出度的節(jié)點(diǎn):

# 找到具有最大入度的節(jié)點(diǎn)
max_in_degree = in_degrees.agg(F.max("inDegree")).head()[0]
node_with_max_in_degree = in_degrees.filter(in_degrees.inDegree == max_in_degree).select("id")

# 找到具有最大出度的節(jié)點(diǎn)
max_out_degree = out_degrees.agg(F.max("outDegree")).head()[0]
node_with_max_out_degree = out_degrees.filter(out_degrees.outDegree == max_out_degree).select("id")

# 打印結(jié)果
node_with_max_in_degree.show()
node_with_max_out_degree.show()

總結(jié)

本文介紹了如何在Python / pyspark環(huán)境中使用graphx進(jìn)行圖計(jì)算。通過結(jié)合Python / pyspark和graphx,可以輕松進(jìn)行圖分析和處理。首先需要安裝Spark和pyspark包,然后配置環(huán)境變量。接著介紹了GraphFrames的安裝和使用,包括創(chuàng)建圖數(shù)據(jù)結(jié)構(gòu)、計(jì)算節(jié)點(diǎn)的入度和出度,以及查找具有最大入度和出度的節(jié)點(diǎn)。

以上就是使用用Pyspark和GraphX實(shí)現(xiàn)解析復(fù)雜網(wǎng)絡(luò)數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于Pyspark GraphX解析網(wǎng)絡(luò)數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python 轉(zhuǎn)換時(shí)間戳為指定格式日期

    Python 轉(zhuǎn)換時(shí)間戳為指定格式日期

    這篇文章主要為大家介紹了Python轉(zhuǎn)換時(shí)間戳,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • python一維表轉(zhuǎn)二維表的實(shí)現(xiàn)示例

    python一維表轉(zhuǎn)二維表的實(shí)現(xiàn)示例

    本文主要介紹了python一維表轉(zhuǎn)二維表的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Python?任務(wù)自動(dòng)化工具nox?的配置與?API詳情

    Python?任務(wù)自動(dòng)化工具nox?的配置與?API詳情

    這篇文章主要介紹了Python?任務(wù)自動(dòng)化工具nox?的配置與?API詳情,Nox?會(huì)話是通過被@nox.session裝飾的標(biāo)準(zhǔn)?Python?函數(shù)來配置的,具體詳情下文相關(guān)介紹需要的小伙伴可以參考一下
    2022-07-07
  • Python實(shí)現(xiàn)IP端口掃描程序

    Python實(shí)現(xiàn)IP端口掃描程序

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)IP端口掃描程序,可以掃描該IP哪些端口對(duì)外是開放的并輸出端口列表,有需要的小伙伴可以了解下
    2025-05-05
  • 如何用python將文件夾內(nèi)多個(gè)excel表格合并成總表

    如何用python將文件夾內(nèi)多個(gè)excel表格合并成總表

    前幾天遇見這么一個(gè)問題,手上有很多張表格,這些表格中都只有一個(gè)sheet,需要把這些表匯總到一張表,下面這篇文章主要給大家介紹了關(guān)于如何用python將文件夾內(nèi)多個(gè)excel表格合并成總表的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • ?Python列表的切片取值詳解

    ?Python列表的切片取值詳解

    這篇文章主要介紹了?Python列表的切片取值詳解,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • python內(nèi)置函數(shù):lambda、map、filter簡(jiǎn)單介紹

    python內(nèi)置函數(shù):lambda、map、filter簡(jiǎn)單介紹

    Python 內(nèi)置了一些比較特殊且實(shí)用的函數(shù),使用這些能使你的代碼簡(jiǎn)潔而易讀。下面對(duì)python內(nèi)置函數(shù):lambda、map、filter簡(jiǎn)單介紹下,需要的朋友參考下吧
    2017-11-11
  • 解決python通過cx_Oracle模塊連接Oracle亂碼的問題

    解決python通過cx_Oracle模塊連接Oracle亂碼的問題

    今天小編就為大家分享一篇解決python通過cx_Oracle模塊連接Oracle亂碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python使用tkinter實(shí)現(xiàn)自定義多參數(shù)對(duì)話框

    python使用tkinter實(shí)現(xiàn)自定義多參數(shù)對(duì)話框

    Tkinter模塊是Python標(biāo)準(zhǔn)庫中的一部分,用于創(chuàng)建圖形用戶界面(GUI)應(yīng)用程序,它提供了一組工具和組件,用于創(chuàng)建窗口、按鈕、文本框等用戶界面元素,并且可以響應(yīng)用戶的輸入,本文將給大家講講python如何使用tkinter實(shí)現(xiàn)自定義多參數(shù)對(duì)話框
    2023-08-08
  • Python類型標(biāo)注里Optional的實(shí)現(xiàn)

    Python類型標(biāo)注里Optional的實(shí)現(xiàn)

    本文主要介紹了Python類型標(biāo)注里Optional的實(shí)現(xiàn),包括與默認(rèn)參數(shù)/可選參數(shù)的關(guān)系,以及在靜態(tài)類型檢查中的注意事項(xiàng),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-02-02

最新評(píng)論

平陆县| 建阳市| 广昌县| 寻乌县| 福州市| 阿克陶县| 东平县| 邵东县| 孝昌县| 天门市| 秭归县| 海南省| 通山县| 岐山县| 瑞安市| 平江县| 紫阳县| 偃师市| 孟州市| 宝兴县| 壶关县| 延津县| 崇阳县| 红安县| 芦山县| 金昌市| 鄂温| 淮南市| 兴国县| 翁源县| 兴义市| 凤山市| 乐东| 静海县| 曲沃县| 乳源| 台东市| 阳东县| 安徽省| 泗洪县| 台中县|