Scala语言入门

学习了这么久让我们来回顾一下之前的内容吧

Hadoop生态体系知识串讲

在这里插入图片描述

Scala编程语言

一、概述

http://scala-lang.org

专门为计算而生的语言,Scala将(Java后者C++)面向对象设计函数式编程结合在一起的简洁的高级编程语言。而函数式编程强调的是通过传递算子(代码|函数)实现大规模数据集的本地计算。Scala虽然是一门独立的编程语言,但是它可以无缝和Java语言对接。Scala编译的代码可以直接运行在JVM之上。Spark 和 Scala 能够紧密集成,例如 使用Scala语言操作大数据集合的时候,用户可以像是在操作本地数据集那样简单操作Spark上的分布式数据集-RDD(这个概念是Spark 批处理的核心术语),继而简化大数据集的处理难度,简化开发步骤。

.java源文件 ---> java编译器 .class ---> jvm

.scala源文件 ---> scala编译器 .class ---> jvm

二、环境搭建

安装

准备工作

建议JDK1.8以上

C:\Users\Administrator>java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
Scala安装

后续所使用的Scala版本:scala-2.11.12.msi

在这里插入图片描述

配置环境变量
# SCALA_HOME  C:\scala
# PATH		  C:\scala\bin
测试使用
C:\Users\Administrator>scala -version
Scala code runner version 2.11.12 -- Copyright 2002-2017, LAMP/EPFL

三、使用方式

命令窗口

测试使用

REPL命令窗口: R(Read 读取)、E(Evaluation 评估求值)、P(Print 打印)、L(Loop 循环)

C:\Users\Administrator>scala
Welcome to Scala 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_161).
Type in expressions for evaluation. Or try :help.

scala> 1+1
res0: Int = 2

scala> 1+2
res1: Int = 3

1+1 表达式 执行后返回一个名为 res0 变量,类型为 Int , 计算结果为2

传统方式

使用文本编辑器 写Scala源文件,手动编译 解释执行

编译指令:scalac *.scala

解释执行:scala *

D:\>scalac HelloWorld3.scala

D:\>scala HelloWorld3
Hello World
object HelloWorld3{
	def main(args:Array[String]):Unit = {
		println("Hello World")
	}
}

IDEA集成

需要集成Scala插件

在线安装

在这里插入图片描述

离线安装

注意版本

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是预测泰坦尼克号上的生还情况的Spark Scala代码示例: ```scala // 导入Spark相关的库 import org.apache.spark.sql.SparkSession import org.apache.spark.ml.feature.{StringIndexer, VectorAssembler} import org.apache.spark.ml.classification.{DecisionTreeClassifier, RandomForestClassifier} import org.apache.spark.ml.evaluation.BinaryClassificationEvaluator import org.apache.spark.ml.tuning.{ParamGridBuilder, CrossValidator} // 创建SparkSession val spark = SparkSession.builder.appName("Titanic Prediction").getOrCreate() // 读取数据集 val data = spark.read.csv("titanic.csv", header=true, inferSchema=true) // 删除无用特征 val cols = Array("PassengerId", "Name", "Ticket", "Cabin") val data = data.drop(cols:_*) // 将字符串类型的特征转换为数值类型 val genderIndexer = new StringIndexer().setInputCol("Sex").setOutputCol("GenderIndex") val embarkedIndexer = new StringIndexer().setInputCol("Embarked").setOutputCol("EmbarkedIndex") val data = genderIndexer.fit(data).transform(data) val data = embarkedIndexer.fit(data).transform(data) // 处理缺失值 val data = data.na.fill(0) // 特征工程 val assembler = new VectorAssembler().setInputCols(Array("Pclass", "Age", "SibSp", "Parch", "Fare", "GenderIndex", "EmbarkedIndex")).setOutputCol("features") val data = assembler.transform(data) // 划分训练集和测试集 val Array(train, test) = data.randomSplit(Array(0.7, 0.3), seed=42) // 构建决策树模型 val dt = new DecisionTreeClassifier().setLabelCol("Survived").setFeaturesCol("features") val dtParamGrid = new ParamGridBuilder().addGrid(dt.maxDepth, Array(3, 5, 7)).build() val dtCrossValidator = new CrossValidator().setEstimator(dt).setEstimatorParamMaps(dtParamGrid).setEvaluator(new BinaryClassificationEvaluator().setLabelCol("Survived").setRawPredictionCol("rawPrediction").setMetricName("areaUnderROC")).setNumFolds(5) val dtModel = dtCrossValidator.fit(train) // 构建随机森林模型 val rf = new RandomForestClassifier().setLabelCol("Survived").setFeaturesCol("features") val rfParamGrid = new ParamGridBuilder().addGrid(rf.numTrees, Array(10, 20, 50)).addGrid(rf.maxDepth, Array(3, 5, 7)).build() val rfCrossValidator = new CrossValidator().setEstimator(rf).setEstimatorParamMaps(rfParamGrid).setEvaluator(new BinaryClassificationEvaluator().setLabelCol("Survived").setRawPredictionCol("rawPrediction").setMetricName("areaUnderROC")).setNumFolds(5) val rfModel = rfCrossValidator.fit(train) // 评估模型 val dtPredictions = dtModel.transform(test) val rfPredictions = rfModel.transform(test) val dtAUC = new BinaryClassificationEvaluator().setLabelCol("Survived").setRawPredictionCol("rawPrediction").setMetricName("areaUnderROC").evaluate(dtPredictions) val rfAUC = new BinaryClassificationEvaluator().setLabelCol("Survived").setRawPredictionCol("rawPrediction").setMetricName("areaUnderROC").evaluate(rfPredictions) // 输出模型性能 println("Decision Tree AUC: " + dtAUC) println("Random Forest AUC: " + rfAUC) ``` 这个代码示例与之前的Python版本代码相似,包括了数据读取、数据清洗、特征工程、模型构建和模型评估等多个步骤。其中,我们使用了决策树和随机森林两种分类算法来预测泰坦尼克号上的生还情况,并使用交叉验证和网格搜索来优化模型性能。最后,我们输出了两个模型的AUC值作为模型性能的指标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值