大数据入门第二十天——scala入门(二)scala基础

一、基础语法

  1.变量类型

  

  // 上表中列出的数据类型都是对象,也就是说scala没有java中的原生类型。在scala是可以对数字等基础类型调用方法的。

  2.变量声明——能用val的尽量使用val!!!

  //使用val定义的变量值是不可变的,相当于java里用final修饰的变量
    val i = 3
    //使用var定义的变量是可变得,在Scala中鼓励使用val
    var j = "hello"
    //Scala编译器会自动推断变量的类型,必要的时候可以指定类型
    var k: String = "world"

  3.条件表达式

    常规判断

 val i = 10
    if (i < 100) {
      println("i<100")
    } 
 //支持混合类型表达式,将结果返回给变量
 val z = if (x > 1) 1 else "error"

  4.块表达式

 //在scala中{}中课包含一系列表达式,块中最后一个表达式的值就是块的值
    //下面就是一个块表达式
    val result = {
      if (x < 0){
        -1
      } else if(x >= 1) {
        1
      } else {
        "error"
      }
    }

  5.循环

  

  to是闭区间;until是左闭右开

//for(i <- 表达式),表达式1 to 10返回一个Range(区间)
    //每次循环将区间中的一个值赋给i
    for (i <- 1 to 3) {
      println(i)
    }

    //for(i <- 数组)
    for (i <- Array(1,3,5)) {
      println(i)
    }

    //高级for循环
    //每个生成器都可以带一个条件,注意:if前面没有分号
    for (i <- 1 to 3; if i > 2) {
      println(i)
    }

    //for推导式:如果for循环的循环体以yield开始,则该循环会构建出一个集合
    //每次迭代生成集合中的一个值
    val j = for (i <- 1 to 3) yield i * 2
    println(j)

  6.方法/函数声明

    方法

def functionName ([参数列表]) : [return type]
def m1(x: Int, y: String): String = {
    // 可以省略return,编译器会自动推断
    x + y
  }

    函数(有点儿像拉姆达表达式)

 val f = (x:Int) => 2*x

  在函数式编程语言中,函数是“头等公民”,它可以像任何其他数据类型一样被传递和操作

   结合Java8中拉姆达表达式,还是阔以理解的

def m1(f: (Int, Int) => Int): Int = {
    f(1,2)
  }
  val f = (x:Int, y:Int) => x +y

  m1(f)

    方法与函数的转换:

def m1(x:Int, y:Int): Int = {
    x + y
  }
  // 使用下划线进行方法与函数的转换
  val f = m1 _

    使用的话,例如Java8中的集合的使用,list.map(),里边可以传入一个拉姆达表达式

原文地址:https://www.cnblogs.com/jiangbei/p/8640590.html

时间: 2024-10-10 18:54:35

大数据入门第二十天——scala入门(二)scala基础的相关文章

大数据入门第十二天——sqoop入门

一.概述 1.sqoop是什么 从其官网:http://sqoop.apache.org/ Apache Sqoop(TM) is a tool designed for efficiently transferring bulk data between Apache Hadoop and structured datastores such as relational databases 中文来说,就是: sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具.

大数据入门第零天——总体课程体系概述

主要包括以下几大块: 大数据基础课程     离线数据分析 离线数据分析hbase 实时数据分析 Scala函数式编程 Spark内存计算 机器学习增强 前五天的课程都是基础课,主要包含Linux基础,shell编程基础以及Java中的多线程.JVM等基础知识,如果你没有相关的基础知识,请自己提前学习. 离线部分课程主要包括:hadoop.hive.flume.azkban.hbase等以及项目实战 实时部分课程主要包括:storm.kafka.redis以及项目实战 内存计算部分课程主要包括:

大数据入门第十一天——hive详解(二)基本操作

一.基本操作 1.DDL 官网的DDL语法教程:点击查看 建表语句 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, c

大数据入门第十四天——Hbase详解(一)入门与安装配置

一.概述 1.什么是Hbase 根据官网:https://hbase.apache.org/ Apache HBase™ is the Hadoop database, a distributed, scalable, big data store. HBASE是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统 中文简明介绍: Hbase是分布式.面向列的开源数据库(其实准确的说是面向列族).HDFS为Hbase提供可靠的底层数据存储服务,MapReduce为Hbase提供高性能的计算能力,

大数据入门第十七天——storm上游数据源 之kafka详解(一)入门

一.概述 1.kafka是什么 根据标题可以有个概念:kafka是storm的上游数据源之一,也是一对经典的组合,就像郭德纲和于谦 根据官网:http://kafka.apache.org/intro 的解释呢,是这样的: Apache Kafka® is a distributed streaming platform ApacheKafka®是一个分布式流媒体平台 l Apache Kafka是一个开源消息系统,由Scala写成.是由Apache软件基金会开发的一个开源消息系统项目. l K

大数据入门第十六天——流式计算之storm详解(二)常用命令

一.常用命令 1.提交命令 提交任务命令格式:storm jar [jar路径] [拓扑包名.拓扑类名] [拓扑名称] torm jar examples/storm-starter/storm-starter-topologies-0.9.6.jar storm.starter.WordCountTopology wordcount 原文地址:https://www.cnblogs.com/jiangbei/p/8513989.html

大数据入门第十七天——storm上游数据源 之kafka详解(二)常用命令

一.kafka常用命令 1.创建topic bin/kafka-topics.sh --create --topic topic_1 --partitions 4 --replication-factor 2 --zookeeper mini1:2181 // 如果配置了PATH可以省略相关命令路径,相关命令参数暂不深入,字面意思也可以大概推断.后续给出完整参数参考. 2.查看所有topic bin/kafka-topics.sh --list --zookeeper mini1:2181 3.

大数据入门第十九天——推荐系统与mahout(一)入门与概述

一.推荐系统概述 为了解决信息过载和用户无明确需求的问题,找到用户感兴趣的物品,才有了个性化推荐系统.其实,解决信息过载的问题,代表性的解决方案是分类目录和搜索引擎,如hao123,电商首页的分类目录以及百度,360搜索等.不过分类目录和搜索引擎只能解决用户主动查找信息的需求,即用户知道自己想要什么,并不能解决用户没用明确需求很随便的问题.经典语录是:你想吃什么,随便!面对这种很随便又得罪不起的用户(女友和上帝),只能通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需

大数据入门第七天——MapReduce详解(下)

一.mapTask并行度的决定机制 1.概述 一个job的map阶段并行度由客户端在提交job时决定 而客户端对map阶段并行度的规划的基本逻辑为: 将待处理数据执行逻辑切片(即按照一个特定切片大小,将待处理数据划分成逻辑上的多个split,然后每一个split分配一个mapTask并行实例处理 这段逻辑及形成的切片规划描述文件,由FileInputFormat实现类的getSplits()方法完成,其过程如下图: // 完整的笔记介绍,参考:http://blog.csdn.net/qq_26