【版本】
当前版本号v20200412
| 版本 | 修改说明 | 
|---|---|
| v20200412 | 初始化版本 | 
Spark 综合实验1
【实验目的】
测试同学们对 Spark RDD 和 Spark SQL的掌握能力
【实验数据说明】
- 请从下面链接下载练习数据:
 
https://pan.baidu.com/s/1Xj6s2evPcx8TpzpHkvjBDA#提取码u0jg
- people.csv 中的数据是中国第五次人口普查(2000年)和第六次人口普查(2010年)的数据。以下为数据列的说明
 
| 列序号 | 说明 | 
|---|---|
| 1 | 地区名称 | 
| 2 | 户口地区类型,分别为 城市/镇/乡村 | 
| 3 | 户口集体类型,分别为 家庭户/集体户 | 
| 4 | 统计年份 | 
| 5 | 性别 | 
| 6 | 人数 | 
- 其中户口地区类型分为三种,即城市、镇和乡村。每个地区类型下,又按集体类型分为两种,家庭户和集体户。
 
【实验环境】
- 操作系统:Ubuntu 16.04
 - Spark:Spark 2.x
 
【实验要求】
- 对地区名称列需要进行清洗,统一31个地区名称。
 
提示1:先对地区名称进行分组和排序,看看有哪些地区名称不一致。
提示2:使用 RDD 的算子对地区名称进行清洗。
- 取2000年普查数据对比2010年普查数据,统计所有人口减少的地区,按减少数量从高到低排列。结果表头格式如下表所示。
 
期望结果:
表头分别为
|地区|2000年人数|2010年人数|人口减少数量|
+----+--------+--------+-------+
|dist|    anum|    bnum|     de|
+----+--------+--------+-------+
|湖北|59508870|57237727|2271143|
|四川|82348296|80417528|1930768|
|重庆|30512763|28846170|1666593|
|贵州|35247695|34748556| 499139|
+----+--------+--------+-------+
- 求2010年普查统计中,性别比最大的10个地区,按性别比从高到低排序,精确到小数点后2位。结果表头格式如下表所示。
 
注1:性别比=男人数/女人数*100 ,精确到小数点后2位
期望结果:
表头分别为:地区、男性数量、女性数量、性别比
+------+--------+--------+------+
|  dist|    mnum|    fnum|    mf|
+------+--------+--------+------+
|  天津| 6907091| 6031602|114.52|
|  海南| 4592283| 4079202|112.58|
|  广东|54400538|49919921|108.98|
|  广西|23924704|22099057|108.26|
|内蒙古|12838243|11868048|108.17|
|  云南|23856696|22110070|107.90|
|  青海| 2913793| 2712930|107.40|
|  陕西|19287575|18039804|106.92|
|  新疆|11270147|10545668|106.87|
|  北京|10126430| 9485938|106.75|
+------+--------+--------+------+
- 求2000年和2010年两次普查统计中,性别比变化最大的10个地区,按变化值从高到低排序,精确到小数点后2位。结果表头格式如下所示。
 
注2:性别比变化=绝对值 | 2010年性别比-2000年性别比 |
期望结果:
#表头分别为
|地区|2000年性别比|2010年性别比|上升或下降|变化值|
+------+------+------+-----+-----+
|  dist|    mf|    mf|trend|    c|
+------+------+------+-----+-----+
|  天津|103.81|114.52|    ↗|10.71|
|  重庆|107.98|102.61|    ↘| 5.37|
|  广东|103.68|108.98|    ↗| 5.30|
|  广西|112.73|108.26|    ↘| 4.47|
|  河南|106.46|102.05|    ↘| 4.41|
|  四川|106.97|103.13|    ↘| 3.84|
|  贵州|110.02|106.31|    ↘| 3.71|
|  安徽|106.57|103.39|    ↘| 3.18|
|  甘肃|107.59|104.42|    ↘| 3.17|
|  湖南|108.96|105.80|    ↘| 3.16|
|  湖北|108.61|105.55|    ↘| 3.06|
|  西藏|102.67|105.70|    ↗| 3.03|
|  吉林|104.89|102.67|    ↘| 2.22|
|  北京|108.93|106.75|    ↘| 2.18|
|  云南|110.06|107.90|    ↘| 2.16|
|黑龙江|104.54|102.85|    ↘| 1.69|
|  山西|107.21|105.56|    ↘| 1.65|
|  江西|108.16|106.67|    ↘| 1.49|
|  辽宁|104.01|102.54|    ↘| 1.47|
|  陕西|108.20|106.92|    ↘| 1.28|
|内蒙古|107.10|108.17|    ↗| 1.07|
|  江苏|102.55|101.52|    ↘| 1.03|
|  河北|103.63|102.84|    ↘| 0.79|
|  青海|106.69|107.40|    ↗| 0.71|
|  上海|105.68|106.19|    ↗| 0.51|
|  新疆|107.24|106.87|    ↘| 0.37|
|  福建|106.29|105.96|    ↘| 0.33|
|  宁夏|105.26|104.99|    ↘| 0.27|
|  浙江|105.51|105.69|    ↗| 0.18|
|  山东|102.50|102.33|    ↘| 0.17|
|  海南|112.54|112.58|    ↗| 0.04|
+------+------+------+-----+-----+
- 按八大经济区域的人数从2000年到2010年增长率,从高到低排序,增长率精确到小数点后2位。结果表头格式如下所示。
 
增长率公式:(2010年人数-2000年人数)/ 2000年人数
八大经济区域分类如下图所示:
| 省/直辖市/自治区 | 经济区域区分 | 
|---|---|
| 北京 | 北部沿海 | 
| 天津 | 北部沿海 | 
| 河北 | 北部沿海 | 
| 山东 | 北部沿海 | 
| 西藏 | 大西北 | 
| 甘肃 | 大西北 | 
| 青海 | 大西北 | 
| 宁夏 | 大西北 | 
| 新疆 | 大西北 | 
| 辽宁 | 东北 | 
| 吉林 | 东北 | 
| 黑龙江 | 东北 | 
| 上海 | 东部沿海 | 
| 江苏 | 东部沿海 | 
| 浙江 | 东部沿海 | 
| 山西 | 黄河中游 | 
| 内蒙古 | 黄河中游 | 
| 河南 | 黄河中游 | 
| 陕西 | 黄河中游 | 
| 福建 | 南部沿海 | 
| 广东 | 南部沿海 | 
| 海南 | 南部沿海 | 
| 广西 | 西南 | 
| 重庆 | 西南 | 
| 四川 | 西南 | 
| 贵州 | 西南 | 
| 云南 | 西南 | 
| 安徽 | 长江中游 | 
| 江西 | 长江中游 | 
| 湖北 | 长江中游 | 
| 湖南 | 长江中游 | 
期望结果:
列名为:经济区域、2000年人数、2010年人数、增长率
+--------+---------+---------+-----+
|   dtype|       s0|       s1|  inc|
+--------+---------+---------+-----+
|南部沿海|126881989|149886161|18.13|
|东部沿海|135381962|156107028|15.31|
|北部沿海|180074133|200197990|11.18|
|  大西北| 56509478| 62321316|10.28|
|黄河中游|182396515|191775710| 5.14|
|    东北|104864179|109513129| 4.43|
|长江中游|222180589|227006754| 2.17|
|    西南|234323381|236002781| 0.72|
+--------+---------+---------+-----+
