大数据数据分析-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 小时前
HBase性能优化秘籍:让数据处理飞起来
大数据·hbase
白水先森2 小时前
ArcGIS Pro制作人口三维地图教程
arcgis·信息可视化·数据分析
Elastic 中国社区官方博客2 小时前
Elasticsearch Open Inference API 增加了对 Jina AI 嵌入和 Rerank 模型的支持
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·jina
努力的小T2 小时前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算
workflower3 小时前
Prompt Engineering的重要性
大数据·人工智能·设计模式·prompt·软件工程·需求分析·ai编程
是一只努力的小菜鸡啦4 小时前
数据分析和数据挖掘的工作内容
信息可视化·数据挖掘·数据分析
API_technology4 小时前
电商搜索API的Elasticsearch优化策略
大数据·elasticsearch·搜索引擎
黄雪超5 小时前
大数据SQL调优专题——引擎优化
大数据·数据库·sql
The god of big data5 小时前
MapReduce 第二部:深入分析与实践
大数据·mapreduce
G***技6 小时前
杰和科技GAM-AI视觉识别管理系统,让AI走进零售营销
大数据·人工智能·系统架构