目录
前言
Spark程序是基于Apache Spark框架开发的应用程序,旨在处理大规模数据集。
本文编写Spark程序,使用的是Scala编程语言。利用Spark中强大的功能来快速处理数据,并在处理过程中进行实时计算和交互。Spark程序通常部署在Spark集群上,以获得最佳性能和可伸缩性。
一、数据处理
1.数据来源
网页:数据科学科研和教学一体化平台 (idatascience.cn)
2.数据转换
因为拿到的数据是csv格式的,所以需要将csv格式转为json格式,下面是使用python语言将csv格式转为json格式的代码
3.数据上传
借助工具将json格式的文件传到虚拟机上,然后使用命令将文件上传到hdfs上,便于后续分析;
ps:hdfs dfs -mkdir /house_data 的作用是创建一个文件夹,用于存放数据
二、统计指标
主要以统计每个小区中距离学校最近的距离、统计上海市三室两卫一厅房型的周边医院最多的十个小区、统计各个城市各个区中房租最贵的前十个小区 、统计北京市周边学校个数最多的五十个小区这四个指标进行数据分析
1.统计每个小区中距离学校最近的距离
实现步骤:1.创建sparkSession对象和Dataset[Row]对象——2.筛选出只包含"城市","区","小区","详细地址","最近学校距离"五个字段数据——3.将最近学校距离的字段改为数值型——4.分组后使用min()方法求距离学校最近的距离——5.将结果存到数据库
代码如下:
package com.lzzy
import org.apache.spark.sql.{Column, Dataset, Row, SaveMode, SparkSession}
import java.util.Properties
object NearestToSchool {
def main(args: Array[String]): Unit = {
//创建sparkSession对象
val ss: SparkSession = SparkSession.builder.appName("NearestToSchool").master("local").getOrCreate
//创建Dataset对象
val data: Dataset[Row] = ss.read.json("hdfs://master-20210322076:9000/house_data/*")
//筛选出只包含"城市","区","小区","详细地址","最近学校距离"五个字段数据
val dataset: Dataset[Row] = data.select("城市", "区", "小区", "详细地址", "最近学校距离")
//将最近学校距离转为数字类型,并赋值到原来列
val df: Dataset[Row] &#