Spark使用图计算解决用户id重复问题

本文介绍如何利用Spark的图计算能力,通过Scala编程解决用户ID在数据中出现重复的问题,借鉴MapReduce的共同好友查找算法思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此问题类似于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常
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值