基于spark分析csgo时期职业选手的数据

1.前言

  本章旨在运用spark集群分析csgo时期职业选手数据集,通过spark各个模块分析职业选手的游戏数据并进行可视化。

2.系统设计思路

2.1系统框架图

2.2模块功能详解

数据清洗

  删除不需要的列,对于队伍为空的数据,添加"NO",处理特殊字符。

rating排序

  将数据转换成DataFrame根据rating排序,若rating相同则按照ADR排序,若ADR相同则按照先后顺序排序将排序结果写入Spark SQL将rating排序前三的热门选手数据输出为一个文件。

数据可视化

  读取top3.csv文件分析3位选手的击杀数据生成击杀数据的扇形图

Spark SQL库的信息查询与分析

  查询中国的所有玩家的基本信息,查询G2中杀敌数最多的玩家,计算所有玩家的K/D均值,查询使用狙击枪杀敌数最多的前五名玩家,查询在每回合中伤害最高的玩家的昵称和伤害数值。

数据流处理

  使用Structured Streaming组件模拟动态输出将playerpositionanalysis原始数据输出对职位数量做词频统计并输出。

3.系统功能实现

3.1系统开发(运行)坏境

  硬件环境:虚拟机模拟

 

  软件环境:SecureCRT 9.4,PyCharm 2023.3.2,VMware Workstation Pro,ubuntu-18.04.5-live-server-amd64.iso,spark-2.4.0-bin-without-hadoop.tgz,hadoop-2.7.4.tar.gz,mysql-connector-j-8.3.0.jar,Anaconda3-2020.11-Linux-x86_64.sh。

3.2功能模块

3.2.1数据清洗

实现功能

  使用RDD将将数据集不要的列删除,处理数据文件中的空值和特殊字符并生成一个新的csv文件。

核心代码
from pyspark import SparkContext, SparkConf
import os

# 设置JAVA_HOME环境变量
os.environ['JAVA_HOME'] = "/home/spark006/servers/jdk"
# 设置Spark Context
conf = SparkConf().setAppName("DataCleaningWithRDD")
sc = SparkContext(conf=conf)

# 读取数据
raw_data = sc.textFile("file:///home/spark006/data/cswork/csgo_players.csv")

# 获取header
header = raw_data.first()
data = raw_data.filter(lambda row: row != header)

# 切分数据
data_split = data.map(lambda line: line.split(","))

# 删除不需要的列
columns_to_keep = [0, 1, 2, 3, 4, 5]  # 这些是需要保留的列索引
data_filtered = data_split.map(lambda row: [row[i] for i in columns_to_keep])

# 填充current_team为空的行
current_team_index = 5  # current_team在第6列
data_filled = data_filtered.map(lambda row: row[:current_team_index] + ["NO" if row[current_team_index] == "" else row[current_team_index]] + row[current_team_index + 1:])

# 清洗特殊符号
import re
def clean_special_chars(row):
    row[0] = re.sub('[^a-zA-Z0-9\s]', '', row[0])  # 清洗real_name
    row[1] = re.sub('[^a-zA-Z0-9\s]', '', row[1])  # 清洗teams
    return row

data_cleaned = data_filled.map(clean_special_chars)

# 转换回CSV格式并保存
data_cleaned.map(lambda row: ",".join(row)).saveAsTextFile("file:///home/spark006/data/cswork/cleaned_dataset_rdd.csv")

# 关闭Spark Context
sc.stop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值