在HDFS文件系统的目录下创建一个employee.txt,其内容如下: zhangsan 20 6200 lisi 25 6600 wangwu 26 6600 xiaoming 26 7000 tianqi 33 8800 jerry 35 8800 假设第一个字段表示姓名,第二个字段表示年龄,第三个字段表示薪水。 1, 通过Spark的RDD编程,统计出employee.txt中相同年龄的薪水总和。(15分) 2, 通过Spark的RDD编程,统计出employee.txt中薪水前三个人的信息。(10分)
时间: 2023-06-06 15:04:42 浏览: 185
HDFS上传文件报错org.apache.hadoop.fs.ChecksumException: Checksum error: file:/hyk/data/hyk.txt
5星 · 资源好评率100%
1. 以下是通过Spark的RDD编程,统计出employee.txt中相同年龄的薪水总和的代码:
```python
from pyspark import SparkContext
sc = SparkContext("local", "Employee")
# 读取employee.txt文件
employee_data = sc.textFile("hdfs://localhost:9000/employee.txt")
# 将每行数据拆分成姓名,年龄和薪水三个字段
split_data = employee_data.map(lambda line: line.split(" "))
# 将拆分出来的数据按照年龄进行分组
grouped_data = split_data.groupBy(lambda x: x[1])
# 计算每个年龄段薪水总和
result = grouped_data.map(lambda x: (x[0], sum(int(i[2]) for i in x[1])))
# 输出结果
result.foreach(print)
```
2. 以下是通过Spark的RDD编程,统计出employee.txt中薪水前三个人的信息的代码:
```python
from pyspark import SparkContext
sc = SparkContext("local", "Employee")
# 读取employee.txt文件
employee_data = sc.textFile("hdfs://localhost:9000/employee.txt")
# 将每行数据拆分成姓名,年龄和薪水三个字段
split_data = employee_data.map(lambda line: line.split(" "))
# 按照薪水进行降序排序,并取前三个数据
result = split_data.takeOrdered(3, key=lambda x: -int(x[2]))
# 输出结果
for r in result:
print(r[0], r[1], r[2])
```
阅读全文