图计算实现ID_Mapping、Oneid打通数据孤岛

  • ID_Mapping与Oneid的作用
    • 大神告诉我们Oneid能用来做什么
    • 输入数据源格式样例
    • 实现原理
    • 当日代码生成
    • 引用jar包
    • 启动命令
    • 辛苦码字如有转载请标明出处谢谢!——拜耳法
    • PS:我要在下一章在我心中不完美的你打一个淋漓尽致的标签
    • 终极难忘系列,标记后永久记录
      • 参考链接

ID_Mapping与Oneid的作用

大神告诉我们Oneid能用来做什么

输入数据源格式样例

样例数据图1

整理后数据图2

实现原理

联通图

生成最大联通图

留下耀总的数据给大家练习了

当日代码生成


import java.util.UUID
import cn.scfl.ebt.util.UtilTool
import org.apache.spark.SparkContext
import org.apache.spark.graphx._
import org.apache.spark.sql.SparkSession
import org.spark_project.jetty.util.StringUtil/*** @Author: baierfa* @version: v1.0* @description: id_mapping 单天实现暂时不加入多天滚动计算 多天计算需要看另一文件YeAndTodayGraphx* @Date: 2020-07-05 10:24*/
object TodayGraphx {def main(args: Array[String]): Unit = {//声明环境变量val spark = SparkSession.builder.appName(s"${this.getClass.getName}").master("local[*]").getOrCreate()val sc = spark.sparkContextval todayPath = "D:\\TESTPATH\\inputpath\\today\\dt=202-07-13"val outPutPath="D:\\TESTPATH\\outtpath\\today\\dt=202-07-13"val edgeoutPutPath="D:\\TESTPATH\\edgepath\\today\\dt=202-07-13"todayIdMapping(spark,sc,todayPath,outPutPath,edgeoutPutPath)spark.close()}/*** 功能描述: <输入今天数据路径 按照文件形式输出到指定路径中 并推出今日图计算点与边集合总个数>* 〈使用今日输入数据转换成唯一数字值 图计算之后再将数值转换回明文 生成唯一uuid〉* @Param: [spark, sc, todayPath, outPutPath, edgeoutPutPath]* @Return: void* @Author: baierfa* @Date: 2020-08-05 10:18*/def todayIdMapping(spark:SparkSession,sc: SparkContext,todayPath: String,outPutPath:String ,edgeoutPutPath:String )={//  一、数据加载//    今天数据加载val todaydf = spark.read.textFile(todayPath)//  二、处理数据为生成图做准备//    生成今日点集合val to_veritx = todaydf.rdd.flatMap(line => {//  将数据源进行分割val field = line.split("\t")//把数据转换成(long,值)要想long值不重复 可以使用hashcode//本文用于生产环境 使用了md5加密 详细文件请看其他篇章for (ele <- field if StringUtil.isNotBlank(ele)&&(!"\\N".equals(ele))) yield (UtilTool.getMD5(ele), ele)})//    生成今日边集合val to_edges = todaydf.rdd.flatMap(line => {//  将数据源进行分割val field = line.split("\t")//将数据转换 将值转换成边 用于连线 连线值这边用""想更换看个人意愿for (i <- 0 to field.length - 2 if StringUtil.isNotBlank(field(i))&&(!"\\N".equals(field(i)));j <- i + 1 to field.length - 1 if StringUtil.isNotBlank(field(j))&&(!"\\N".equals(field(j)))) yield Edge(UtilTool.getMD5(field(i)), UtilTool.getMD5(field(j)), "")})
//    在数据不做多次etl数据操作下可以使用共同出现次数来判定是否归并为同一个用户
//    例如 合并起来用户 mobile 与 device_id 同时出现两次以上才被记入同一个
//      .map(edge => (edge, 1))
//      .reduceByKey(_ + _)
//      .filter(tp => tp._2 > 2)
//      .map(tp => tp._1)//   三、汇总各个节点使用图计算生成图// 单将数据重新赋值适用于以后多数据源合并val veritx = to_veritxval edges = to_edges//   开始使用点集合与边集合进行图计算训练val graph = Graph(veritx, edges)//   四、生成最大连通图val graph2 = graph.connectedComponents()val vertices = graph2.vertices//   五、将最小图计算值替换成uuidval uidRdd = vertices.map(tp => (tp._2, tp._1)).groupByKey().map(tp => (StringUtil.replace(UUID.randomUUID().toString, "-", ""), tp._2))//   对点与边进行统计作为记录输出 可以用于后期统计检查生成报表警报数据是否异常val uu = veritx.map(lin=>("vertices",1)).union(edges.map(lin=>("edges",1))).reduceByKey(_ + _).map(tp=>tp._1+"\t"+tp._2)//    将现有的数据转换成铭文识别后展示//    将各个点的数据汇总到driver端val idmpMap = veritx.collectAsMap()//    按照map方式广播出去做转换val bc = sc.broadcast(idmpMap)//  将数据的id转换成明文val ss = uidRdd.mapPartitions(itemap => {val vert_id_map = bc.valueitemap.map(tp => {//从广播变量中获取id值的信息并转换val t2 = for (ele <- tp._2)  yield vert_id_map.get(ele).get//按照将要输出的数据格式进行排版 (uuid   mobile1,mobile2,mobile3,device_id1,device_2)tp._1+"\t"+t2.mkString(",")})})
//  数据输出ss.saveAsTextFile(outPutPath)uu.saveAsTextFile(edgeoutPutPath)}
}

引用jar包

 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spark.version>2.4.0</spark.version><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-sql_2.11</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-graphx_2.11</artifactId><version>${spark.version}</version></dependency><dependency><groupId>com.thoughtworks.paranamer</groupId><artifactId>paranamer</artifactId><version>2.8</version></dependency></dependencies>

启动命令

spark-submit \
--class IdMapping \
--master yarn \
--deploy-mode cluster \
--num-executors 40 \
--driver-memory 4g \
--executor-memory 6g \
--executor-cores 3 \
--conf spark.default.parallelism=400 \
--conf spark.shuffle.memoryFraction=0.3 \
ID_Mapping_Spark.jar \
hdfs://user/hive/oneid_data/data_origindata_di/dt=2020-07-13 \
hdfs://user/hive/oneid_data/data_sink_id_mapping/dt=2020-07-14 \
hdfs://user/hive/oneid_data/data_sink_edge_vertex/dt=2020-07-14

辛苦码字如有转载请标明出处谢谢!——拜耳法

都看到这里了非常感谢!
本片章暂未完结 有疑问请+vx :baierfa

PS:我要在下一章在我心中不完美的你打一个淋漓尽致的标签

将大神挂在那片白云下: oneid与用户标签之间的相互打通 实现用户标签

终极难忘系列,标记后永久记录

参考链接

链接: 用户标签(一):图计算实现ID_Mapping、Oneid打通数据孤岛.
链接: 用户标签(二):增量版ID_Mapping、Oneid图计算打通数据孤岛实现.
链接: 用户标签(三):oneid与用户标签之间的相互打通 实现用户标签.
链接: 用户标签(四):MD5代替Hashcode生成唯一数字编码.

用户标签(一):图计算实现ID_Mapping、Oneid打通数据孤岛相关推荐

  1. idmp用户唯一标识图计算模拟演示

    idmp用户唯一标识 需求出现原因: 现在一般网站所有账号登陆,账号就是用户的唯一标识 但是部分网站也存在一些以游客模式进行浏览消费的事件, 这个时候就需要利用**图计算(graphx)**的方法计算 ...

  2. 熠智科技CTO汤载阳:筑牢隐私计算基础底座,打通数据要素流通的任督二脉 | 数据猿专访...

    数据智能产业创新服务媒体 --聚焦数智 · 改变商业 2020年4月,中共中央.国务院正式发布<关于构建更加完善的数据要素市场化配置体制机制的意见>,将数据与土地.资本.劳动力并列为关键生 ...

  3. 用户标签(三):oneid与用户标签之间的相互打通 实现用户标签

    oneid与用户标签之间的相互打通 实现用户画像打标行为 附录说明: 整个流程: 1.使用数据源数据进行数据清理(整理出关联数据与将要打标的数据值) 2.将关联键值与oneid对应关联起来 并整理好将 ...

  4. 用户画像标签数据开发之标签相似度计算

    目录 0. 相关文章链接 1. 什么是标签相似度计算 2. 案例场景 3. 数据开发 注:此博文为根据 赵宏田 老师的 用户画像·方法论与工程化解决方案 一书读后笔记而来,仅供学习使用 0. 相关文章 ...

  5. 还没真正理解用户标签体系?看这篇就够了!

    对用户标签的理解不够透彻? 用户标签体系创建的方法论总是三头两绪? 具体业务场景中,经常找不到数据分析的思路? 本文根据神策数据业务咨询师钟秉哲以<构建用户标签体系,助力企业精细化运营>为 ...

  6. video 微信 标签层级过高_基于大数据的用户标签体系建设思路和应用

    在大数据时代,数据在呈现出海量化.多样化和价值化变化的同时,也改变了传统IT行业的市场竞争环境.营销策略和服务模式.如何在ZB级的海量数据中获取并筛选有价值的信息,是对IT企业的一大挑战,通过构建客户 ...

  7. 如何真正理解用户标签体系?

    对用户标签的理解不够透彻? 用户标签体系创建的方法论总是三头两绪? 具体业务场景中,经常找不到数据分析的思路? 本文根据神策数据业务咨询师钟秉哲以<构建用户标签体系,助力企业精细化运营>为 ...

  8. 从310到蚂蚁森林,蚂蚁金服在线图计算的创新与实践

    蚂蚁金服过去十五年,重塑支付改变生活,为全球超过十二亿人提供服务,这些背后离不开技术的支撑.在 2019 杭州云栖大会上,蚂蚁金服将十五年来的技术沉淀,以及面向未来的金融技术创新和参会者分享.我们将其 ...

  9. 基于图查询系统的图计算引擎

    柯学翰, 陈榕 上海交通大学软件学院并行与分布式系统研究所,上海 200240 摘要:在目前的研究中,图查询和图计算系统是相互独立的,但在实际应用中两者通常是同时存在的.为解决相互独立的系统带来的存储 ...

最新文章

  1. Codeforces.1051F.The Shortest Statement(最短路Dijkstra)
  2. NLP实践:对话系统技术原理和应用
  3. Makefile速成
  4. MySQL日志分类及性能分析你应该知道的知识
  5. JAVA思维导图学习笔记_8张思维导图,55天学习笔记,帮你入门JavaSE
  6. 英伟达与 ARM 初携手,英国共建 AI 研究中心
  7. php 上一页 下一页代码,php无限上一页,下一页,求完善代码??
  8. 鸟叫就能黑掉AI系统,而且你根本察觉不到
  9. 文献阅读 Linear Regression for Face Recognition
  10. git 远程删除分支之后 本地分支更新后还在
  11. ROS中测试机器人里程计信息
  12. 非官方浙江大学校园网认证客户端开发笔记(一)
  13. 6-2 递归方法:汉诺塔问题 (10 分)
  14. ios 描述文件位置
  15. ireport怎么实现总计和小计?
  16. ie9 java小程序设置_小程序 自定义导航栏
  17. java中计算一段时间内白天的时间和夜晚的时间
  18. ap的ht模式_华通AP-HT-WD400AP-IN系列
  19. python是人都能学会_人人都能学会的python编程教程15:高级特性2
  20. wps 如何查找多年前的文档

热门文章

  1. 打开matlab的规则,matlab的函数和运算规则
  2. POJ_1200 Crazy Search ( Hash映射 )
  3. STM32实现定时器和LED呼吸灯
  4. linux编译linphone,Linux VOIP测试环境,Asterisk/linphone 的搭建
  5. Dorado7之BDF3框架初探
  6. videojs 加入关闭按钮
  7. 自制简单的linux 系统
  8. 如果对接中国移动、中国联通和中国电信的物联网连接管理平台
  9. 售后管理年度维修报告【实用】
  10. 文件路径./和../