大数据数据分析-scala、IDEA、jdk之间的搭配关系

Scala主要是一门面向对象编程语言和函数式编程语言。

一、大数据框架(处理海量/流式数据)

  • ---以HADOOP 2. x为系列的大数据生态系统处理框架

离线数据分析,分析的数据为N+1天数据

-----MapReduce

并行计算框架,分而治之

    • HDFS(存储数据)
      • YARN(分布式的集群资源管理和任务调度框架)

----Hive

基于SQL处理框架,将SQL转换为MapReduce,处理存储在HDFS上的数据,并且运行在YARN上。

-----SQOOP

桥梁:RDBMS(关系型数据库)-HDFS/HIVE 导入导出

----HBASE

大数据分布式数据库

与MapReduce进行集成,可以读取数据进行分析处理,

也可能将分析结果存储到HBase表中。

-----以storm为体系实时流式数据处理框架

数据实时产生 ->进行实时处理

应用场景:

实时交通监控,电商营业额,双十一

-----以spark为体系的大数据处理框架

内存

将处理数据过程中的中间结果数据,存放到内存中

核心编程(基础编程)

  • sparkCore
  • SparkSQL
  • SparkSteaming

高级编程

机器学习/深度学习/人工智能

  • SparkGraphx
  • SparkMLlib
  • Spark on R

二、Scala下载

Scala官网: The Scala Programming Languagehttps://www.scala-lang.org/

虚拟机镜像

Index of /centos-vault/7.6.1810/isos/x86_64/ | 清华大学开源软件镜像站 | Tsinghua Open Source MirrorIndex of /centos-vault/7.6.1810/isos/x86_64/ | 清华大学开源软件镜像站,致力于为国内和校内用户提供高质量的开源软件镜像、Linux 镜像源服务,帮助用户更方便地获取开源软件。本镜像站由清华大学 TUNA 协会负责运行维护。https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/isos/x86_64/scala环境安装:

IntelliJ IDEA 2022.3版本支持多个Scala和JDK版本。以下是一些常见的Scala和JDK版本组合,适用于IntelliJ IDEA 2022.3:

  1. Scala 2.13.x与JDK 8、JDK 11或JDK 17:这是目前最新的Scala稳定版本,与多个JDK版本兼容。
  2. Scala 2.12.x与JDK 8或JDK 11:Scala 2.12.x是较旧的Scala版本,但仍然在许多项目中广泛使用。

--1,JAVA环境安装

JAVA_HOME

PATH

--2,SCALA环境安装

SCALA_HOME

PATH

--3,IDEA安装

不同的idea版本对应不同的scala和jdk

三、SCALA中变量的声明

---val value 简写,表示的意思为 值

value name = "zhangsan"

不可变

在SCALA语言中,variableType Inference,自动推断

当然也可以指定变量的类型,类型紧跟变量名后面,并使用分号隔开

val xx : String = "xxx"

--var variable简写,表示变量,可以改变的值

1.变量和常量

常量:在程序执行的过程中,其值不会被改变的变量 。

Java 与Scala变量和常量语法对比

Java

变量类型 变量名称 = 初始值

final 常量类型 常量名称 = 初始值

Scala

var 变量名 [: 变量类型] = 初始值

val 常量名 [: 常量类型] = 初始值

2.键盘输入

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。

直接无缝衔接使用Java的键盘输入 ------ Scanner

使用Scala提供的自带的键盘输入 ------ StdIn.readxxx()

基本语法

  • StdIn.readLine()
  • StdIn.readShort()
  • StdIn.readDouble()

3.关键字说明

  1. package: 包,等同于java中的package
  2. object:关键字,声明一个单例对象(伴生对象)
  3. main方法:从外部可以直接调用执行的方法
  4. def 方法名称 ( 参数名称 : 参数类型 ) : 返回值类型 = { 方法体 }

Scala 完全面向对象,故scala去掉了Java中非面向对象的元素,如static关键字,void类型

  1. static

scala无static关键字,由object实现类似静态方法的功能(类名.方法名)

class关键字和Java中的class关键字作用相同,用来定义一个类

  1. void

对于无返回值的函数,scala定义其返回值类型为Unit类型

四、 For循环控制

基本语法:

复制代码
// java for循环语法
for(int i = 0; i < 10; i++){
    System.out.println("i=" + i);
}
 
// scala for循环语法
for(i <- 1 to 10){
    println("i=" + i)
}
// 输出:从1~10(包含 1 和 10 )
4.1范围数据循环(Until)

1)基本语法

复制代码
// 方法一:
for(i <- 1 until 10) {
    print("i=" + i)
}
// 输出:从1~10(包含 1,不包含 10 )
 
// 方法二:
for(i <- Range(1,10)) {
    print("i=" + i)
}
4.2循环守卫
复制代码
 基本语法:
for(i <- 1 to 3 if i != 2){
   print(i + " ")
}
4.3循环步长by

2)基本语法:

复制代码
    for(i <- 1 to 10 by 2){
      print("i=" +i)
    }
4.4嵌套循环

3)基本语法:

复制代码
    //  嵌套循环
    for(i <- 1 to 3;j <- 1 to 3) {
      println("i=" +i+ "j=" +j)
    }
4.5引入变量
复制代码
    //  引入变量
    for(i <- 1 to 3; j = 4 - i){
      println("i=" + i + "j=" +j)
    }
//    等价于
    for(i <- 1 to 3) {
      var j = 4 - i
      println("i=" + i + "j=" +j)
    }
4.6循环返回值
复制代码
    val res = for (i <- 1 to 10) yield i
    println(res)
    //  需求:将原数据中所有值乘以2,并把数据返回到一个新的集合中。
    var res_l = for (i <- 1 to 10) yield {
      i * 2
    }
    println(res_l)

五、函数

1)函数可以作为值进行传递

复制代码
    def f(n: Int): Int = {
      println("f调用")
      n + 1
    }

    //  调用f(123),返回值124,将返回值赋给val变量result
    var result: Int = f(123)
    println(result)
相关推荐
萤火虫儿飞飞1 小时前
从基础加热到智能生态跨越:艾芬达用创新重构行业价值边界!
大数据·人工智能·重构
seanmeng20221 小时前
Apache Iceberg on AWS - 通过Firehose流式导入数据到Iceberg表
大数据
seanmeng20221 小时前
Apache Iceberg on AWS - 理解Iceberg表格式
大数据
smppbzyc2 小时前
2025年亚太杯(中文赛项)数学建模B题【疾病的预测与大数据分析】原创论文讲解(含完整python代码)
python·数学建模·数据分析·数学建模竞赛·亚太杯数学建模·亚太杯
运器1233 小时前
【一起来学AI大模型】PyTorch DataLoader 实战指南
大数据·人工智能·pytorch·python·深度学习·ai·ai编程
mit6.8245 小时前
[es自动化更新] Updatecli编排配置.yaml | dockerfilePath值文件.yml
大数据·elasticsearch·搜索引擎·自动化
Jinkxs5 小时前
Elasticsearch 简介
大数据·elasticsearch·搜索引擎
Yolo566Q5 小时前
“SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价及拓展应用
信息可视化·数据分析·单一职责原则
亮学长6 小时前
lodash不支持 Tree Shaking 而 lodash-es可以
大数据·前端·elasticsearch
乙真仙人6 小时前
AI Agents时代,数据分析将彻底被颠覆
人工智能·数据挖掘·数据分析