GraphFrames用戶指南- ScalagydF4y2Ba
本文演示的例子gydF4y2BaGraphFrames用戶指南gydF4y2Ba。gydF4y2Ba
進口gydF4y2BaorggydF4y2Ba。gydF4y2BaapachegydF4y2Ba。gydF4y2Ba火花gydF4y2Ba。gydF4y2BasqlgydF4y2Ba。gydF4y2Ba_gydF4y2Ba進口gydF4y2BaorggydF4y2Ba。gydF4y2BaapachegydF4y2Ba。gydF4y2Ba火花gydF4y2Ba。gydF4y2BasqlgydF4y2Ba。gydF4y2Ba功能gydF4y2Ba。gydF4y2Ba_gydF4y2Ba進口gydF4y2BaorggydF4y2Ba。gydF4y2BagraphframesgydF4y2Ba。gydF4y2Ba_gydF4y2Ba
創建GraphFramesgydF4y2Ba
您可以創建從頂點和邊DataFrames GraphFrames。gydF4y2Ba
頂點DataFrame:頂點DataFrame應該包含一個特殊的列命名gydF4y2Ba
idgydF4y2Ba
它指定圖中每個頂點的惟一id。gydF4y2Ba邊DataFrame:邊DataFrame應該包含兩個特殊的列:gydF4y2Ba
srcgydF4y2Ba
(源邊緣的頂點ID)gydF4y2BadstgydF4y2Ba
(目標邊緣的頂點ID)。gydF4y2Ba
DataFrames都可以有任意其他列。這些列可以代表頂點和邊的屬性。gydF4y2Ba
創建頂點和邊gydF4y2Ba
/ /頂點DataFramegydF4y2Ba瓦爾gydF4y2BavgydF4y2Ba=gydF4y2Ba火花gydF4y2Ba。gydF4y2BacreateDataFramegydF4y2Ba(gydF4y2Ba列表gydF4y2Ba(gydF4y2Ba(gydF4y2Ba“一個”gydF4y2Ba,gydF4y2Ba“愛麗絲”gydF4y2Ba,gydF4y2Ba34gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“b”gydF4y2Ba,gydF4y2Ba“Bob”gydF4y2Ba,gydF4y2Ba36gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“c”gydF4y2Ba,gydF4y2Ba“查理”gydF4y2Ba,gydF4y2Ba30.gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“d”gydF4y2Ba,gydF4y2Ba“大衛”gydF4y2Ba,gydF4y2Ba29日gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“e”gydF4y2Ba,gydF4y2Ba“以斯帖”gydF4y2Ba,gydF4y2Ba32gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“f”gydF4y2Ba,gydF4y2Ba“屁股”gydF4y2Ba,gydF4y2Ba36gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“g”gydF4y2Ba,gydF4y2Ba“加貝”gydF4y2Ba,gydF4y2Ba60gydF4y2Ba)gydF4y2Ba))。gydF4y2BatoDFgydF4y2Ba(gydF4y2Ba“id”gydF4y2Ba,gydF4y2Ba“名稱”gydF4y2Ba,gydF4y2Ba“年齡”gydF4y2Ba)gydF4y2Ba/ /邊DataFramegydF4y2Ba瓦爾gydF4y2BaegydF4y2Ba=gydF4y2Ba火花gydF4y2Ba。gydF4y2BacreateDataFramegydF4y2Ba(gydF4y2Ba列表gydF4y2Ba(gydF4y2Ba(gydF4y2Ba“一個”gydF4y2Ba,gydF4y2Ba“b”gydF4y2Ba,gydF4y2Ba“朋友”gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“b”gydF4y2Ba,gydF4y2Ba“c”gydF4y2Ba,gydF4y2Ba“關注”gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“c”gydF4y2Ba,gydF4y2Ba“b”gydF4y2Ba,gydF4y2Ba“關注”gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“f”gydF4y2Ba,gydF4y2Ba“c”gydF4y2Ba,gydF4y2Ba“關注”gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“e”gydF4y2Ba,gydF4y2Ba“f”gydF4y2Ba,gydF4y2Ba“關注”gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“e”gydF4y2Ba,gydF4y2Ba“d”gydF4y2Ba,gydF4y2Ba“朋友”gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“d”gydF4y2Ba,gydF4y2Ba“一個”gydF4y2Ba,gydF4y2Ba“朋友”gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“一個”gydF4y2Ba,gydF4y2Ba“e”gydF4y2Ba,gydF4y2Ba“朋友”gydF4y2Ba)gydF4y2Ba))。gydF4y2BatoDFgydF4y2Ba(gydF4y2Ba" src "gydF4y2Ba,gydF4y2Ba“dst”gydF4y2Ba,gydF4y2Ba“關係”gydF4y2Ba)gydF4y2Ba
讓我們創建一個從這些頂點和邊圖:gydF4y2Ba
瓦爾gydF4y2BaggydF4y2Ba=gydF4y2BaGraphFramegydF4y2Ba(gydF4y2BavgydF4y2Ba,gydF4y2BaegydF4y2Ba)gydF4y2Ba
/ /這個示例圖還帶有GraphFrames包。gydF4y2Ba/ / val g = examples.Graphs.friendsgydF4y2Ba
基本圖形和DataFrame查詢gydF4y2Ba
GraphFrames提供簡單圖形查詢,例如節點的程度。gydF4y2Ba
而且,由於GraphFrames圖表示為對頂點和邊DataFrames,很容易使強大的頂點和邊DataFrames直接查詢。這些可用DataFrames頂點和邊GraphFrame字段。gydF4y2Ba
顯示gydF4y2Ba(gydF4y2BaggydF4y2Ba。gydF4y2Ba頂點gydF4y2Ba)gydF4y2Ba
顯示gydF4y2Ba(gydF4y2BaggydF4y2Ba。gydF4y2Ba邊緣gydF4y2Ba)gydF4y2Ba
傳入的頂點的度:gydF4y2Ba
顯示gydF4y2Ba(gydF4y2BaggydF4y2Ba。gydF4y2Ba入度gydF4y2Ba)gydF4y2Ba
即將離任的頂點的度:gydF4y2Ba
顯示gydF4y2Ba(gydF4y2BaggydF4y2Ba。gydF4y2Ba出度gydF4y2Ba)gydF4y2Ba
頂點的度:gydF4y2Ba
顯示gydF4y2Ba(gydF4y2BaggydF4y2Ba。gydF4y2Ba度gydF4y2Ba)gydF4y2Ba
您可以直接在運行查詢頂點DataFrame。例如,我們可以找到的年齡最小的人圖:gydF4y2Ba
瓦爾gydF4y2Ba最小的gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2Ba頂點gydF4y2Ba。gydF4y2BagroupBygydF4y2Ba()。gydF4y2Ba最小值gydF4y2Ba(gydF4y2Ba“年齡”gydF4y2Ba)gydF4y2Ba顯示gydF4y2Ba(gydF4y2Ba最小的gydF4y2Ba)gydF4y2Ba
同樣地,您可以運行在邊緣DataFrame查詢。例如,讓我們計算“跟隨”的數量關係圖:gydF4y2Ba
瓦爾gydF4y2BanumFollowsgydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2Ba邊緣gydF4y2Ba。gydF4y2Ba過濾器gydF4y2Ba(gydF4y2Ba“關係=“跟隨”gydF4y2Ba)。gydF4y2Ba數gydF4y2Ba()gydF4y2Ba
主題發現gydF4y2Ba
建立更複雜的關係涉及使用圖案邊緣和頂點。下列細胞發現的頂點與邊雙兩個方向。結果是一個DataFrame,列名是圖案的鑰匙。gydF4y2Ba
檢查gydF4y2BaGraphFrame用戶指南gydF4y2Ba更多細節的API。gydF4y2Ba
/ /搜索對頂點和邊的兩個方向。gydF4y2Ba瓦爾gydF4y2Ba圖案gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2Ba找到gydF4y2Ba(gydF4y2Ba“(一)- (e) - > (b);(b) - (e2) - > (a)”gydF4y2Ba)gydF4y2Ba顯示gydF4y2Ba(gydF4y2Ba圖案gydF4y2Ba)gydF4y2Ba
結果是一個DataFrame以來,您可以構建更複雜的查詢可以在主題。讓我們找到所有的互惠關係一個人年齡超過30:gydF4y2Ba
瓦爾gydF4y2Ba過濾後的gydF4y2Ba=gydF4y2Ba圖案gydF4y2Ba。gydF4y2Ba過濾器gydF4y2Ba(gydF4y2Ba“b。年齡> 30”gydF4y2Ba)gydF4y2Ba顯示gydF4y2Ba(gydF4y2Ba過濾後的gydF4y2Ba)gydF4y2Ba
狀態查詢gydF4y2Ba
大多數主題查詢是無狀態的,簡單的表達,在上麵的示例。下一個例子展示更複雜的查詢,攜帶國家沿著一條路徑的主題。表達這些查詢結合GraphFrame主題與過濾結果,發現過濾器的使用順序操作構造一係列DataFrame列。gydF4y2Ba
例如,假設你想要確定一個鏈4頂點屬性定義的函數序列。也就是說,在4頂點鏈gydF4y2Bac b - > - > - > dgydF4y2Ba
,確定鏈條的子集匹配這個複雜的過濾器:gydF4y2Ba
初始化狀態的路徑。gydF4y2Ba
基於頂點更新狀態。gydF4y2Ba
更新狀態基於頂點b。gydF4y2Ba
c和d等。gydF4y2Ba
如果某些條件匹配的最終狀態,那麼過濾器接受鏈。gydF4y2Ba
下麵的代碼片段演示這個過程,我們確定的4個頂點鏈,這樣至少2 3條邊的“朋友”關係。在這個例子中,“朋友”的狀態是當前計算邊緣;一般來說,它可以是任何DataFrame列。gydF4y2Ba
/ /找到4頂點鏈。gydF4y2Ba瓦爾gydF4y2Bachain4gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2Ba找到gydF4y2Ba(gydF4y2Ba“(一)- (ab) - > (b);(b) - (bc) - > (c);(c) - (cd) - > (d)”gydF4y2Ba)gydF4y2Ba/ /查詢序列,與國家(問)gydF4y2Ba/ / (a)定義方法更新狀態給下一個元素的主題。gydF4y2BadefgydF4y2BasumFriendsgydF4y2Ba(gydF4y2Ba問gydF4y2Ba:gydF4y2Ba列gydF4y2Ba,gydF4y2Ba的關係gydF4y2Ba:gydF4y2Ba列gydF4y2Ba):gydF4y2Ba列gydF4y2Ba=gydF4y2Ba{gydF4y2Ba當gydF4y2Ba(gydF4y2Ba的關係gydF4y2Ba= = =gydF4y2Ba“朋友”gydF4y2Ba,gydF4y2Ba問gydF4y2Ba+gydF4y2Ba1gydF4y2Ba)。gydF4y2Ba否則gydF4y2Ba(gydF4y2Ba問gydF4y2Ba)gydF4y2Ba}gydF4y2Ba/ / (b)使用序列操作方法應用於序列中的元素的主題。gydF4y2Ba/ /在這種情況下,有3條邊的元素。gydF4y2Ba瓦爾gydF4y2Ba條件gydF4y2Ba=gydF4y2BaSeqgydF4y2Ba(gydF4y2Ba“ab”gydF4y2Ba,gydF4y2Ba“公元前”gydF4y2Ba,gydF4y2Ba“cd”gydF4y2Ba)。gydF4y2BafoldLeftgydF4y2Ba(gydF4y2Ba點燃gydF4y2Ba(gydF4y2Ba0gydF4y2Ba))((gydF4y2Ba問gydF4y2Ba,gydF4y2BaegydF4y2Ba)gydF4y2Ba= >gydF4y2BasumFriendsgydF4y2Ba(gydF4y2Ba問gydF4y2Ba,gydF4y2Ba上校gydF4y2Ba(gydF4y2BaegydF4y2Ba)(gydF4y2Ba“關係”gydF4y2Ba)))gydF4y2Ba/ / (c)對DataFrame應用過濾器。gydF4y2Ba瓦爾gydF4y2BachainWith2Friends2gydF4y2Ba=gydF4y2Bachain4gydF4y2Ba。gydF4y2Ba在哪裏gydF4y2Ba(gydF4y2Ba條件gydF4y2Ba> =gydF4y2Ba2gydF4y2Ba)gydF4y2Ba顯示gydF4y2Ba(gydF4y2BachainWith2Friends2gydF4y2Ba)gydF4y2Ba
子圖gydF4y2Ba
GraphFrames過濾提供了api來構建子圖的邊緣和頂點。這些過濾器可以組合在一起。例如,下麵的子圖隻包含人們誰是朋友,誰是30多歲。gydF4y2Ba
/ /選擇子圖的用戶年齡超過30歲,和邊緣類型的“朋友”gydF4y2Ba瓦爾gydF4y2Bag2gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2BafilterEdgesgydF4y2Ba(gydF4y2Ba“關係=‘朋友’”gydF4y2Ba)gydF4y2Ba。gydF4y2BafilterVerticesgydF4y2Ba(gydF4y2Ba“30歲>”gydF4y2Ba)gydF4y2Ba。gydF4y2BadropIsolatedVerticesgydF4y2Ba()gydF4y2Ba
複雜的三重過濾gydF4y2Ba
下麵的例子顯示了如何選擇子圖基於三重過濾操作的優勢及其“src”和“dst”頂點。擴展這個示例超越三胞胎通過使用更複雜的圖案很簡單。gydF4y2Ba
/ /基於邊緣選擇子圖類型的“e”“關注”gydF4y2Ba/ /從年輕用戶“a”指向一個老用戶“b”。gydF4y2Ba瓦爾gydF4y2Ba路徑gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2Ba找到gydF4y2Ba(gydF4y2Ba“(一)——(e) - > (b)”gydF4y2Ba)gydF4y2Ba。gydF4y2Ba過濾器gydF4y2Ba(gydF4y2Ba“e。關係=“跟隨”gydF4y2Ba)gydF4y2Ba。gydF4y2Ba過濾器gydF4y2Ba(gydF4y2Ba”一個。年齡< b.age”gydF4y2Ba)gydF4y2Ba/ /“路徑”包含頂點信息。提取邊緣。gydF4y2Ba瓦爾gydF4y2Bae2gydF4y2Ba=gydF4y2Ba路徑gydF4y2Ba。gydF4y2Ba選擇gydF4y2Ba(gydF4y2Ba“e.src”gydF4y2Ba,gydF4y2Ba“e.dst”gydF4y2Ba,gydF4y2Ba“e.relationship”gydF4y2Ba)gydF4y2Ba/ /在火花1.5 +,用戶可以簡化這個調用:gydF4y2Ba/ / val e2 = paths.select (e。*)gydF4y2Ba/ /構造子圖gydF4y2Ba瓦爾gydF4y2Bag2gydF4y2Ba=gydF4y2BaGraphFramegydF4y2Ba(gydF4y2BaggydF4y2Ba。gydF4y2Ba頂點gydF4y2Ba,gydF4y2Bae2gydF4y2Ba)gydF4y2Ba
顯示gydF4y2Ba(gydF4y2Bag2gydF4y2Ba。gydF4y2Ba頂點gydF4y2Ba)gydF4y2Ba
顯示gydF4y2Ba(gydF4y2Bag2gydF4y2Ba。gydF4y2Ba邊緣gydF4y2Ba)gydF4y2Ba
標準圖像算法gydF4y2Ba
本節描述標準的內置GraphFrames圖算法。gydF4y2Ba
廣度優先搜索(BFS)gydF4y2Ba
從“以斯帖”搜索的用戶年齡< 32。gydF4y2Ba
瓦爾gydF4y2Ba路徑gydF4y2Ba:gydF4y2BaDataFramegydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2BabfsgydF4y2Ba。gydF4y2BafromExprgydF4y2Ba(gydF4y2Ba“name =以斯帖”gydF4y2Ba)。gydF4y2BatoExprgydF4y2Ba(gydF4y2Ba“年齡< 32 "gydF4y2Ba)。gydF4y2Ba運行gydF4y2Ba()gydF4y2Ba顯示gydF4y2Ba(gydF4y2Ba路徑gydF4y2Ba)gydF4y2Ba
搜索也可以限製邊緣過濾器和最大路徑長度。gydF4y2Ba
瓦爾gydF4y2BafilteredPathsgydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2BabfsgydF4y2Ba。gydF4y2BafromExprgydF4y2Ba(gydF4y2Ba“name =以斯帖”gydF4y2Ba)。gydF4y2BatoExprgydF4y2Ba(gydF4y2Ba“年齡< 32 "gydF4y2Ba)gydF4y2Ba。gydF4y2BaedgeFiltergydF4y2Ba(gydF4y2Ba”關係! =‘朋友’”gydF4y2Ba)gydF4y2Ba。gydF4y2BamaxPathLengthgydF4y2Ba(gydF4y2Ba3gydF4y2Ba)gydF4y2Ba。gydF4y2Ba運行gydF4y2Ba()gydF4y2Ba顯示gydF4y2Ba(gydF4y2BafilteredPathsgydF4y2Ba)gydF4y2Ba
連接組件gydF4y2Ba
計算每個頂點的連接組件成員並返回一個圖,每個頂點指定組件ID。gydF4y2Ba
瓦爾gydF4y2Ba結果gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2BaconnectedComponentsgydF4y2Ba。gydF4y2Ba運行gydF4y2Ba()gydF4y2Ba/ /不工作在1.4火花gydF4y2Ba顯示gydF4y2Ba(gydF4y2Ba結果gydF4y2Ba)gydF4y2Ba
強連通分量gydF4y2Ba
計算每個頂點的強連通分量(SCC)並返回一個與每個頂點分配圖,包含這個頂點的鱗狀細胞癌。gydF4y2Ba
瓦爾gydF4y2Ba結果gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2BastronglyConnectedComponentsgydF4y2Ba。gydF4y2Ba麥克斯特gydF4y2Ba(gydF4y2Ba10gydF4y2Ba)。gydF4y2Ba運行gydF4y2Ba()gydF4y2Ba顯示gydF4y2Ba(gydF4y2Ba結果gydF4y2Ba。gydF4y2BaorderBygydF4y2Ba(gydF4y2Ba“組件”gydF4y2Ba))gydF4y2Ba
品牌傳播gydF4y2Ba
運行靜態標簽傳播算法檢測社區網絡。gydF4y2Ba
網絡中的每個節點最初分配給自己的社區。在每一個superstep,所有鄰居節點發送他們的社區歸屬和更新他們的狀態模式社區歸屬傳入消息。gydF4y2Ba
LPA圖表是一個標準的社區檢測算法。廉價的計算,盡管(1)收斂並不能保證和(2)可以得到微不足道的解決方案(所有節點識別到一個社區)。gydF4y2Ba
瓦爾gydF4y2Ba結果gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2BalabelPropagationgydF4y2Ba。gydF4y2Ba麥克斯特gydF4y2Ba(gydF4y2Ba5gydF4y2Ba)。gydF4y2Ba運行gydF4y2Ba()gydF4y2Ba顯示gydF4y2Ba(gydF4y2Ba結果gydF4y2Ba。gydF4y2BaorderBygydF4y2Ba(gydF4y2Ba“標簽”gydF4y2Ba))gydF4y2Ba
網頁排名gydF4y2Ba
識別重要的基於連接圖頂點。gydF4y2Ba
/ /運行PageRank直到收斂寬容“托爾”。gydF4y2Ba瓦爾gydF4y2Ba結果gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2Ba網頁排名gydF4y2Ba。gydF4y2BaresetProbabilitygydF4y2Ba(gydF4y2Ba0.15gydF4y2Ba)。gydF4y2Ba托爾gydF4y2Ba(gydF4y2Ba0.01gydF4y2Ba)。gydF4y2Ba運行gydF4y2Ba()gydF4y2Ba顯示gydF4y2Ba(gydF4y2Ba結果gydF4y2Ba。gydF4y2Ba頂點gydF4y2Ba)gydF4y2Ba
顯示gydF4y2Ba(gydF4y2Ba結果gydF4y2Ba。gydF4y2Ba邊緣gydF4y2Ba)gydF4y2Ba
/ /運行PageRank固定數量的迭代。gydF4y2Ba瓦爾gydF4y2Baresults2gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2Ba網頁排名gydF4y2Ba。gydF4y2BaresetProbabilitygydF4y2Ba(gydF4y2Ba0.15gydF4y2Ba)。gydF4y2Ba麥克斯特gydF4y2Ba(gydF4y2Ba10gydF4y2Ba)。gydF4y2Ba運行gydF4y2Ba()gydF4y2Ba顯示gydF4y2Ba(gydF4y2Baresults2gydF4y2Ba。gydF4y2Ba頂點gydF4y2Ba)gydF4y2Ba
/ /運行PageRank個性化頂點”“gydF4y2Ba瓦爾gydF4y2Baresults3gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2Ba網頁排名gydF4y2Ba。gydF4y2BaresetProbabilitygydF4y2Ba(gydF4y2Ba0.15gydF4y2Ba)。gydF4y2Ba麥克斯特gydF4y2Ba(gydF4y2Ba10gydF4y2Ba)。gydF4y2BasourceIdgydF4y2Ba(gydF4y2Ba“一個”gydF4y2Ba)。gydF4y2Ba運行gydF4y2Ba()gydF4y2Ba顯示gydF4y2Ba(gydF4y2Baresults3gydF4y2Ba。gydF4y2Ba頂點gydF4y2Ba)gydF4y2Ba
最短路徑gydF4y2Ba
計算最短路徑組給定的具有裏程碑意義的頂點,在地標頂點指定的ID。gydF4y2Ba
瓦爾gydF4y2Ba路徑gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2BashortestPathsgydF4y2Ba。gydF4y2Ba地標性建築gydF4y2Ba(gydF4y2BaSeqgydF4y2Ba(gydF4y2Ba“一個”gydF4y2Ba,gydF4y2Ba“d”gydF4y2Ba))。gydF4y2Ba運行gydF4y2Ba()gydF4y2Ba顯示gydF4y2Ba(gydF4y2Ba路徑gydF4y2Ba)gydF4y2Ba
三角形數gydF4y2Ba
經過每個頂點計算三角形的數量。gydF4y2Ba
進口gydF4y2BaorggydF4y2Ba。gydF4y2BagraphframesgydF4y2Ba。gydF4y2Ba例子gydF4y2Ba瓦爾gydF4y2BaggydF4y2Ba:gydF4y2BaGraphFramegydF4y2Ba=gydF4y2Ba例子gydF4y2Ba。gydF4y2Ba圖gydF4y2Ba。gydF4y2Ba朋友gydF4y2Ba/ /獲得示例圖gydF4y2Ba瓦爾gydF4y2Ba結果gydF4y2Ba=gydF4y2BaggydF4y2Ba。gydF4y2BatriangleCountgydF4y2Ba。gydF4y2Ba運行gydF4y2Ba()gydF4y2Ba結果gydF4y2Ba。gydF4y2Ba選擇gydF4y2Ba(gydF4y2Ba“id”gydF4y2Ba,gydF4y2Ba“數”gydF4y2Ba)。gydF4y2Ba顯示gydF4y2Ba()gydF4y2Ba