目录
1、使用Spark完成数据中的“风级”,“风向”、“天气情况”相关指标统计及筛选
1、使用Scala统计某月、全年的温差、平均气温以及最值等相关的指标
一、前言
& 什么是Spark?
Spark最初由美国加州伯克利大学(UCBerkeley)的AMP(Algorithms, Machines and People)实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。Spark在诞生之初属于研究性项目,其诸多核心理念均源自学术研究论文。2013年,Spark加入Apache孵化器项目后,开始获得迅猛的发展,如今已成为Apache软件基金会最重要的三大分布式计算系统开源项目之一(即Hadoop、Spark、Storm)
& 什么是Scala
Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言 、并集成面向对象编程和函数式编程的各种特性。
---------------------------------------------------------------------------------------------------------------------------------
二、数据准备(数据类型的转换)
将天气数据进行转换,csv转json文件,相关代码如下:
(使用的python,相对简单)
代码如下:
import csv
import json
import chardet
csvFilePath = 'weather.csv'
jsonFilePath = 'weather.json'
# 检测文件编码
with open(csvFilePath, 'rb') as file:
result = chardet.detect(file.read())
encoding = result['encoding']
# 读取 CSV 文件并处理非 UTF-8 字符
with open(csvFilePath, 'r', encoding=encoding, errors='replace') as csvFile:
csvDict = csv.DictReader(csvFile)
jsonData = json.dumps([row for row in csvDict], ensure_ascii=False)
# 将 JSON 数据写入文件
with open(jsonFilePath, 'w', encoding='utf-8') as jsonFile:
jsonFile.write(jsonData)
转后的数据如下(仅展示部分数据):
---------------------------------------------------------------------------------------------------------------------------------
建类:
import java.io.Serializable;
public class Weather implements Serializable {
private String date;//日期
private String week;//星期
private String weather;//天气情况
private String min_temperature;//最低温度
private String max_temperature;//最高温度
private String wind_direction;//风向
private String wind_scale;//风力等级
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getWeek() {
return week;
}
public void setWeek(String week) {
this.week = week;
}
public String getWeather() {
return weather;
}
public void setWeather(String weather) {
this.weather = weather;
}
public String getMin_temperature() {
return min_temperature;
}
public void setMin_temperature(String min_temperature) {
this.min_temperature = min_temperature;
}
public String getMax_temperature() {
return max_temperature;
}