![JAR search and dependency download from the Maven repository](/logo.png)
com.tencent.angel.sona.examples.graph.LouvainExample.scala Maven / Gradle / Ivy
package com.tencent.angel.sona.examples.graph
/*
* Tencent is pleased to support the open source community by making Angel available.
*
* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
*
* https://opensource.org/licenses/Apache-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*
*/
import com.tencent.angel.sona.context.PSContext
import com.tencent.angel.sona.graph.louvain.Louvain
import com.tencent.angel.sona.graph.utils.GraphIO
import org.apache.spark.util.SparkUtil
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.storage.StorageLevel
object LouvainExample {
def main(args: Array[String]): Unit = {
val params = SparkUtil.parse(args)
val sc = start()
val input = params.getOrElse("input", null)
val partitionNum = params.getOrElse("partitionNum", "100").toInt
val storageLevel = StorageLevel.fromString(params.getOrElse("storageLevel", "MEMORY_ONLY"))
val numFold = params.getOrElse("numFold", "3").toInt
val batchSize = params.getOrElse("batchSize", "10000").toInt
val numOpt = params.getOrElse("numOpt", "4").toInt
val output = params.getOrElse("output", null)
val enableCheck = params.getOrElse("enableCheck", "false").toBoolean
val eps = params.getOrElse("eps", "0.0").toDouble
val bufferSize = params.getOrElse("bufferSize", "1000000").toInt
val isWeighted = params.getOrElse("isWeighted", "false").toBoolean
val psPartitionNum = params.getOrElse("psPartitionNum",
sc.getConf.get("spark.ps.instances", "10")).toInt
val cpDir = params.get("cpDir").filter(_.nonEmpty).orElse(GraphIO.defaultCheckpointDir)
.getOrElse(throw new Exception("checkpoint dir not provided"))
sc.setCheckpointDir(cpDir)
val louvain = new Louvain()
.setPartitionNum(partitionNum)
.setStorageLevel(storageLevel)
.setNumFold(numFold)
.setNumOpt(numOpt)
.setBatchSize(batchSize)
.setDebugMode(enableCheck)
.setEps(eps)
.setBufferSize(bufferSize)
.setIsWeighted(isWeighted)
.setPSPartitionNum(psPartitionNum)
.setSrcNodeIdCol("src")
.setDstNodeIdCol("dst")
val df = GraphIO.load(input, isWeighted = isWeighted)
val mapping = louvain.transform(df)
GraphIO.save(mapping, output)
stop()
}
def start(): SparkContext = {
val conf = new SparkConf()
conf.setAppName("louvain")
val sc = new SparkContext(conf)
PSContext.getOrCreate(sc)
sc
}
def stop(): Unit = {
PSContext.stop()
SparkContext.getOrCreate().stop()
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy