开发者学堂课程【2020版大数据实战项目之 DMP 广告系统(第七阶段):统一识别_定义类型】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/682/detail/11839
统一识别_定义类型
了解完图集运算,回到数据集中,做统一用户识别的任务
// (4)统一用户识别
// 需求:有些数据中,有 uuid, 有一些有 mac, 有一些有udid
在数据集中有很多标注ID的东西,假如有个问题,一个用户,
// 场景:拿着手机移动,上午在家里,下午在教室,晚上在宿舍(ip
地址不一样,但 mac 地址一样)
// 情况:用户1,在一个时间点上,汇报了 mac, udid, 另外一个
时间点汇报了 mac, uuid,构建连通图
// 环境:先创建 Vertex, Edge
}
/**...*/
def createTags(row: Row): IdsWithTags = {...}
def genIdMap(row: Row): Map[String, String] = {...}
def getMainId(ids: Map[String, String]): String = {...}
def toGeoHash(longitude: Double, latitude: Double): String
= {...}
}
case class IdsWithTags(mainId: String, ids: Map[String,
String], tags: Map[String, Int])
(定义两个新的 case class)
Case class Vertex(id: String, ids: Map[String, String], tags: Map[String,Int])
// 任何一个顶点都需要 id, String 类型,进行图计算以后还需要再合并数据,整个的 id 列表 ids,对应的是 Map,里面存放[String, String]
,标签也要合并,此时生成对应的 tags,也是一个 Map,里面为[String,Int]
,
Case class Edge(src: String, dst: String)
// Edge 中接收一些参数,边“Edge”要表达不同顶点之间的关系,所以必须有两个字段,分别为 src 和 dst,都保持和 id 一样的类型为 String;src 代表这个边的一个顶点的 id,dst 代表另一个顶点的 id。