简单使用Spark、Scala完成对天气数据的指标统计

目录

一、前言

&  什么是Spark?

&  什么是Scala

二、数据准备(数据类型的转换)

三、Spark部分

1、使用Spark完成数据中的“风级”,“风向”、“天气情况”相关指标统计及筛选

四、Scala部分

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;
    }

  
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值