k-Core
k-Core算法用于在圖中找出符合指定核心度的緊密關(guān)聯(lián)的子圖結(jié)構(gòu)。一個(gè)圖的k-Core是指反復(fù)去除度小于等于k的節(jié)點(diǎn)后所剩余的子圖,k-Core組件能夠輸出該子圖中每個(gè)節(jié)點(diǎn)所連接的其他節(jié)點(diǎn)。
配置組件
方法一:可視化方式
在Designer工作流頁(yè)面添加k-Core組件,并在界面右側(cè)配置相關(guān)參數(shù):
參數(shù)類型 | 參數(shù) | 描述 |
字段設(shè)置 | 選擇源頂點(diǎn)列 | 邊表的起點(diǎn)所在列。 |
選擇目標(biāo)頂點(diǎn)列 | 邊表的終點(diǎn)所在列。 | |
參數(shù)設(shè)置 | k 核數(shù) | 節(jié)點(diǎn)核數(shù),默認(rèn)值為1。 如果一個(gè)節(jié)點(diǎn)存在于k-Core,而在(k+1)-Core中被移去,那么此節(jié)點(diǎn)的核數(shù)(coreness)為k。 |
執(zhí)行調(diào)優(yōu) | 進(jìn)程數(shù) | 作業(yè)并行執(zhí)行的節(jié)點(diǎn)數(shù)。數(shù)字越大并行度越高,但是框架通訊開銷會(huì)增大。 |
進(jìn)程內(nèi)存 | 單個(gè)作業(yè)可使用的最大內(nèi)存量,單位:MB,默認(rèn)值為4096。 如果實(shí)際使用內(nèi)存超過該值,會(huì)拋出 |
方法二:PAI命令方式
使用PAI命令配置k-Core組件參數(shù)。您可以使用SQL腳本組件進(jìn)行PAI命令調(diào)用,詳情請(qǐng)參見場(chǎng)景4:在SQL腳本組件中執(zhí)行PAI命令。
PAI -name KCore
-project algo_public
-DinputEdgeTableName=KCore_func_test_edge
-DfromVertexCol=flow_out_id
-DtoVertexCol=flow_in_id
-DoutputTableName=KCore_func_test_result
-Dk=2;
參數(shù) | 是否必選 | 默認(rèn)值 | 描述 |
inputEdgeTableName | 是 | 無(wú) | 輸入邊表名。 |
inputEdgeTablePartitions | 否 | 全表讀入 | 輸入邊表的分區(qū)。 |
fromVertexCol | 是 | 無(wú) | 輸入邊表的起點(diǎn)所在列。 |
toVertexCol | 是 | 無(wú) | 輸入邊表的終點(diǎn)所在列。 |
outputTableName | 是 | 無(wú) | 輸出表名。 |
outputTablePartitions | 否 | 無(wú) | 輸出表的分區(qū)。 |
lifecycle | 否 | 無(wú) | 輸出表的生命周期。 |
workerNum | 否 | 未設(shè)置 | 作業(yè)并行執(zhí)行的節(jié)點(diǎn)數(shù)。數(shù)字越大并行度越高,但是框架通訊開銷會(huì)增大。 |
workerMem | 否 | 4096 | 單個(gè)作業(yè)可使用的最大內(nèi)存量,單位:MB,默認(rèn)值為4096。 如果實(shí)際使用內(nèi)存超過該值,會(huì)拋出 |
splitSize | 否 | 64 | 數(shù)據(jù)切分大小。 |
k | 是 | 1 | 節(jié)點(diǎn)核數(shù)。 |
使用示例
添加SQL腳本組件,輸入以下SQL語(yǔ)句生成訓(xùn)練數(shù)據(jù)。
drop table if exists KCore_func_test_edge; create table KCore_func_test_edge as select * from ( select '1' as flow_out_id,'2' as flow_in_id union all select '1' as flow_out_id,'3' as flow_in_id union all select '1' as flow_out_id,'4' as flow_in_id union all select '2' as flow_out_id,'3' as flow_in_id union all select '2' as flow_out_id,'4' as flow_in_id union all select '3' as flow_out_id,'4' as flow_in_id union all select '3' as flow_out_id,'5' as flow_in_id union all select '3' as flow_out_id,'6' as flow_in_id union all select '5' as flow_out_id,'6' as flow_in_id )tmp;
對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)圖:
添加SQL腳本組件,輸入以下PAI命令進(jìn)行訓(xùn)練。
drop table if exists ${o1}; PAI -name KCore -project algo_public -DinputEdgeTableName=KCore_func_test_edge -DfromVertexCol=flow_out_id -DtoVertexCol=flow_in_id -DoutputTableName=${o1} -Dk=2;
右擊上一步的組件,選擇查看數(shù)據(jù) > SQL腳本的輸出,查看訓(xùn)練結(jié)果。
| node1 | node2 | | ----- | ----- | | 1 | 2 | | 1 | 3 | | 1 | 4 | | 2 | 1 | | 2 | 3 | | 2 | 4 | | 3 | 1 | | 3 | 2 | | 3 | 4 | | 4 | 1 | | 4 | 2 | | 4 | 3 |