1. 数据
    a.txt:
    u1 12 zs
    u2 15 xx
    u3 18 aaa
    u4 20 xa1
    u5 22 xa2

b.txt
u1 2016 9 m1
u2 2017 12 m2
u3 2017 1 m3
u3 2014 2 m4
u3 2012 3 m5
2. 需求
两个数据集:
数据集A id,age,name
数据集B id,year,month,movie
数据集都是使用空格来分割的

要求,输出:id,age,name,year,month,movie(同一个用户,按year升序,没有数据B的id,用null补

  1. 逻辑
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}import scala.collection.mutableobject DealDataExample1_3 {def main(args: Array[String]): Unit = {if (args.length!=3){println("cn.edu360.Example.DealDataExample1 <input1><input2><output>")sys.exit()}//输入参数val Array(input1,input2,output)=argsval conf = new SparkConf()conf.setMaster("local")conf.setAppName(DealDataExample1_1.getClass.getSimpleName)val sc = new SparkContext(conf)//获取数据val data1: RDD[String] = sc.textFile(input1)val data2: RDD[String] = sc.textFile(input2)//切割数据val cutRes1: RDD[(String, String)] = data1.map({t =>val res = t.split(" ", 2)val id: String = res(0)val values: String = res(1)//println(s"id=${id},values=${values}")(id, values)})val cutRes2: RDD[(String, String)] = data2.map({t =>val res = t.split(" ", 2)val id: String = res(0)val values: String = res(1)//println(s"id=${id},values=${values}")(id, values)})//println(cutRes2.collect().toBuffer)//组合数据val combyRes: RDD[(String, (Iterable[String], Iterable[String]))] = cutRes1.cogroup(cutRes2)//println(combyRes.collect().toBuffer)//(u4,(CompactBuffer(20 xa1),CompactBuffer()))//数据预处理val dealRes: RDD[(String, String)] = combyRes.map({t =>(t._1, t._2._1.toString().concat(",").concat(t._2._2.toString()))})//println(dealRes.collect().toBuffer)//以key分组val groupRes: RDD[(String, Iterable[String])] = dealRes.groupByKey(1)val selectRes: RDD[(String, String)] = groupRes.mapValues({t =>val userMsg = t.headval movieMsg = t.tailval movieData: String = if (movieMsg.isEmpty) {"null,null,null"} else {movieMsg.toList.sortBy(_.split(" ")(0)).mkString(" ")}userMsg.concat(",").concat(movieData)})println(selectRes.collect().toBuffer)sc.stop()}
}
  1. 结果
    u1 12 zs,2016 9 m1
    u2 15 xx,2017 12 m2
    u3 18 aaa,2012 3 m5 2014 2 m4 2017 1 m3
    u4 20 xa1,null,null,null
    u5 22 xa2,null,null,null

数据处理案例一之求同存异相关推荐

  1. Python数据处理案例

    关于数据处理案例有两个,第一个案例是我整理到有道云上的,就直接剪切下来了,下面直接进入正题~ 案例1:快餐数据 案例2:欧洲杯数据 先进行数据探索 data.info()data.describe() ...

  2. Python之数据处理案例

    Python之数据处理案例 1 准备数据 2 要求 (1)将数据表添加两列:每位同学的各科成绩总分(score)和每位同学的整体情况(类别),类别按照[df.score.min()-1,400,450 ...

  3. hadoop2.20+hive+sqoop+mysql数据处理案例

    一.业务说明 使用Hadoop2及其他开源框架,对本地的日志文件进行处理,将处理后需要的数据(PV.UV...)重新导入到关系型数据库(Mysql)中,使用Java程序对结果数据进行处理,组织成报表的 ...

  4. 【Python 针对 excel 数据处理案例】

    目录 前言 一.文件读取 二.文件内容处理 三.多文件比对案例 前言 本章主要讲述针对多个 excel 文件的数据处理. 一.文件读取 1.通过 pandas库 直接读取本地 指定路径下的 excel ...

  5. python数据比对怎么做_同事给你迷之Excel数据,4个数据处理案例教你Python数据对比更新...

    经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死.后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器-- pandas 前言 有时候我们需要 ...

  6. python大数据分析实例-Python大数据处理案例

    编辑推荐: 来源于cnblogs,介绍了利用决策树分类,利用随机森林预测, 利用对数进行fit,和exp函数还原等. 分享 知识要点: lubridate包拆解时间 | POSIXlt 利用决策树分类 ...

  7. python数据处理实例-Python大数据处理案例

    分享 知识要点: lubridate包拆解时间 | POSIXlt 利用决策树分类,利用随机森林预测 利用对数进行fit,和exp函数还原 训练集来自Kaggle华盛顿自行车共享计划中的自行车租赁数据 ...

  8. python数据可视化之json格式数据处理案例:世界人口地图

    数据来源: 部分数据截图: 代码: import json from country_codes import get_country_code import pygal from pygal_map ...

  9. R语言tidyverse数据处理建模案例

    管道%>% 左连接left_join() 筛选行 filter(条件) 行排序arrange() 选择列select() 修改(计算)列mutate() 分组汇总group_by().%> ...

最新文章

  1. 【Interfacenavigation】选择时间/日期组件(34)
  2. python输出价目表-Python:使用基于事件驱动的SAX解析XML
  3. MySQL数据库Raid存储方案
  4. [C++][数据结构]栈(stack)的实现
  5. c语言期末考试复习题
  6. AI 最新突破集锦 AI的瓶颈和进展 AI控制核聚变 AI预测蛋白质3D结构 Alpha Fold2 AI证明数学公式 自动驾驶 AI替代的硬件
  7. Linux进程、线程、任务调度(1)贵在坚持
  8. java开发工程师面试自我介绍_java程序员面试自我介绍范文
  9. u盘pe启动盘怎么制作?
  10. msvcr100.dll丢失的解决方法,哪种解决方法值得推荐?
  11. python 使用PIL工具包中的pytesseract函数识别英文字符
  12. java生成word文件带上页码,使用apache poi api创建Word文档时,如何以Y的X格式添加页码?...
  13. php实现同步异步,同步、异步
  14. mysql分组并查询最新记录信息(亲测有效)
  15. 学习-浏览器的同源政策
  16. 如何提供一个短链(URL shorter)生成服务
  17. spdlog linux编译出错,spdlog在工厂方法上崩溃
  18. idea鼠标滚轮修改字体大小
  19. Category的底层分析
  20. 2022年度总结——一切都在慢慢变好

热门文章

  1. ios swiftui_ios swiftui中的本地化
  2. 文本分类的14种算法(1)
  3. sql 条件查询以及模糊查询
  4. AC日记——Two poj 1849
  5. Microsoft.Office.Interop.Word引用- 无法嵌入互操作类型
  6. 如何在WORD中插入可播放的视频
  7. Oracle 报错 28000原因和解决方法
  8. react使用mock
  9. python里面的爬虫爬取网页
  10. nginx1.18.0 安装vts