【版本】
当前版本号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|
+--------+---------+---------+-----+