docs/algo/sona/commonfriends_sona.md
Common Friends算法,顾名思义,旨在挖掘两个用户的共同好友数(Common Friends);作为常见的图特征/指标,它常用来刻画用户之间的关系紧密程度,并且被广泛用于好友推荐,社区划分,熟人/陌生人分析等场景。
Common Friends该算法的使用兼顾三种场景:
一、输入全量的关系链,计算已存在连边的共同好友数,可用于刻画关系紧密程度。
二、输入全量关系链和待计算共同好友的边表,计算指定连边的共同好友数,可用于连接预测或推理。
三、增量计算:当输入graph每隔一段时间有新增边,并需要例行化计算全量共同好友时,可在原计算结果的基础上做增量计算,适用于输入graph较大,而新增边相对较少,新加入的节点或边只影响graph中少部分边的共同好友个数的场景,相比每次进行全量计算,耗时显著降低。
Common Friends的实现过程中,需要将顶点的邻接表存储在多个PS上。共同的好友的计算逻辑发生在worker上,此时需要从PS拉取两个顶点的邻接表计算交集,从而得到共同好友数。
tab, 空格等DISK_ONLY/MEMORY_ONLY/MEMORY_AND_DISKinput=hdfs://my-hdfs/data
extraInput=hdfs://my-hdfs/data
output=hdfs://my-hdfs/output
source ./spark-on-angel-env.sh
$SPARK_HOME/bin/spark-submit \
--master yarn-cluster\
--conf spark.ps.instances=1 \
--conf spark.ps.cores=1 \
--conf spark.ps.jars=$SONA_ANGEL_JARS \
--conf spark.ps.memory=10g \
--name "commonfriends angel" \
--jars $SONA_SPARK_JARS \
--driver-memory 5g \
--num-executors 1 \
--executor-cores 4 \
--executor-memory 10g \
--class org.apache.spark.angel.examples.cluster.CommonFriendsExample \
../lib/spark-on-angel-examples-3.3.0.jar
input:$input extraInput:$extraInput output:$output sep:tab storageLevel:MEMORY_ONLY useBalancePartition:true \
partitionNum:4 psPartitionNum:1 batchSize:3000 pullBatchSize:1000 src:1 dst:2 mode:yarn-cluster