此问题类似于MapReduce做过寻找共同好友(使用scala)
package tags
import beans.Logs
import org.apache.log4j.{Level, Logger}
import org.apache.spark.graphx.{Edge, Graph, VertexId, VertexRDD}
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
import utils.Utils
import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.Map
/**
* 对于打标签过程中,由于用户id形成方式不同,同一个人的id会有多个
* 在进行分组统计合并时,会出现误差,为了解决上述问题,采用以下解决方案
*/
//对于不同变现形式的用户id进行合并
//类似于求共同好友
object TagsNew {
def main(args: Array[String]): Unit = {
Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
/**
* 1)判断参数
*/
if(args.length < 3){
println(
"""
|tags.TagsNew need two parameter <logDataInputPath><firstProcessInputPath><outputPath>
|<logDataInputPath>:原始数据输入路径
|<firstProcessInputPath> :第一处理后的输出路径
|<outputPath>:第二次处理后的输出路径
""".stripMargin)
System.exit(0)
}
val Array(logDataInputPath,firstProcessInputPath,outputPath)=args
/**
* 2)程序入口
*/
val conf = new SparkConf()
.setAppName("TagsNew")
.setMaster("local")
val sc = new SparkContext(conf)
/**
* 获取用户id ,(1,set("a","b")),(2,set("a","c"))图计算的顶点user
*/
//产生唯一id常用方法,