使用spark实现 根据以下要求, 完成相关数据处理? 目前有如下数据集(上传到HDFS的 /data/data.txt): 张三-北京 李四-上海 王五-北京 赵六-广州 田七-深圳 周八-武汉 李九-杭州 需求: 统计每个城市有多少人?
时间: 2024-04-14 22:26:45 浏览: 152
基于Python语言的Spark数据处理分析案例集锦,基于7个数据集的数据分析+源码+文档说明
5星 · 资源好评率100%
使用Spark来实现数据集的处理和统计每个城市的人数是很方便的。下面是使用Spark的Python API(PySpark)来完成数据处理和城市人数统计的示例代码:
```python
from pyspark.sql import SparkSession
from pyspark.sql.functions import count
# 创建SparkSession
spark = SparkSession.builder.appName("CityPopulation").getOrCreate()
# 读取数据集文件
data = spark.read.text("/data/data.txt")
# 对每行数据进行处理,分割人名和城市信息
processed_data = data.rdd.flatMap(lambda line: line.value.split())
# 将处理后的数据转换为元组形式
result = processed_data.map(lambda item: tuple(item.split('-')))
# 将结果转换为DataFrame并命名列
df = spark.createDataFrame(result, ["name", "city"])
# 统计每个城市的人数
city_population = df.groupBy("city").agg(count("name").alias("population"))
# 打印结果
city_population.show()
# 停止SparkSession
spark.stop()
```
运行以上代码,你将得到如下所示的最终结果:
```
+-------+----------+
| city|population|
+-------+----------+
| 上海| 1|
| 北京| 2|
| 深圳| 1|
| 杭州| 1|
| 广州| 1|
| 武汉| 1|
+-------+----------+
```
这样,你就可以通过使用Spark来统计每个城市的人数。每个城市作为一个分组,使用`groupBy`和`agg`函数来计算每个分组的人数。
阅读全文