3.1.2 spark体系之分布式计算-scala编程-scala基础

目录

1.数据类型

2.变量和常量的声明

3.类和对象

3.1 创建类

3.2 创建对象

3.3 伴生类和伴生对象

3.4 注意点

4. if else

5.for ,while,do…while

5.1 to和until 的用法(不带步长,带步长区别)

5.2 创建for循环

5.3 创建多层for循环

5.4 for循环中可以加条件判断,可以使用分号隔开,也可以不使用分号

5.5 while循环,while(){},do {}while()


1.数据类型

和java中类似,但是首字母需要大写

Scala Option(选项)类型用来表示一个值是可选的(有值或无值)

Option[T] 是一个类型为 T 的可选值的容器: 如果值存在, Option[T] 就是一个 Some[T] ,如果不存在, Option[T] 就是对象 None

2.变量和常量的声明

  • 定义变量或者常量的时候,也可以写上返回的类型,一般省略,如:val a:Int = 10
  • 常量不可再赋值
/**
     * 定义变量和常量
     * 变量 :用 var 定义 ,可修改 
     * 常量 :用 val 定义,不可修改
     */
    var name = "zhangsan"
    println(name)
    name ="lisi"
    println(name)
    val gender = "m"
//    gender = "m"//错误,不能给常量再赋值

3.类和对象

Scala中object相当于java中的单例,object中定义的全是静态的

Scala中定义变量使用var,定义常量使用val,变量可变,常量不可变

Scala中每行后面都有分号自动推断机制,不用显示写;

建议再scala中,命名使用驼峰式命名法

Scala类中可以传参,传参一定要指定类型,相当于java中的构造函数

3.1 创建类

class Person{
  val name = "zhangsan"
  val age = 18
  def sayName() = {
    "my name is "+ name
  }
}

3.2 创建对象

object Lesson_Class {
   def main(args: Array[String]): Unit = {
    val person = new Person()
    println(person.age);
    println(person.sayName())
  }
}

3.3 伴生类和伴生对象

class Person(xname :String , xage :Int){
  var name = Person.name
  val age = xage
  var gender = "m"
  def this(name:String,age:Int,g:String){
    this(name,age)
    gender = g
  }
  
  def sayName() = {
    "my name is "+ name
  }

}

object Person {
  val name = "zhangsanfeng"
  
  def main(args: Array[String]): Unit = {
val person = new Person("wagnwu",10,"f")
//定义变量多用val,jvm便于回收
    println(person.age);
    println(person.sayName())
    println(person.gender)
  }
}

3.4 注意点

  1. 建议类名首字母大写 ,方法首字母小写,类和方法命名建议符合驼峰命名法
  2. scala 中的object是单例对象,相当于java中的工具类,可以看成是定义静态的方法的类(调用的时候直接类名加上.)object不可以传参数(但是对象有apply方法可以传参)。另:Trait不可以传参数
  3. scala中的class类默认可以传参数,默认的传参数就是默认的构造函数。
  4. 重写构造函数的时候,必须要调用默认的构造函数。

  5. class 类属性自带getter ,setter方法
  6. 使用object时,不用new,使用class时要new ,并且new的时候,class中除了方法不执行,其他都执行。
  7. 如果在同一个文件中,object对象和class类的名称相同,则这个对象就是这个类的伴生对象,这个类就是这个对象的伴生类。可以互相访问私有变量。
  8. Scala中当new class时候,类中除了方法不执行(除了构造方法),其他都会执行。
  9. 类中构造方法,参数写上了val表示私有
  10. 重写构造函数:def this(){},构造中第一行必须调用默认的构造

4. if else

 /**
     * if else 
     */
    val age =18 
    if (age < 18 ){
    	println("no allow")
    }else if (18<=age&&age<=20){
    	println("allow with other")
    }else{
    	println("allow self")
    }

5.for ,while,do…while

5.1 to和until 的用法(不带步长,带步长区别)

/**
     * to和until
     * 例:
     * 1 to 10 返回1到10的Range数组,包含10
     * 1 until 10 返回1到10 Range数组 ,不包含10
不带.的是操作符,带.的是方法
     */
    
    println(1 to 10 )//打印 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
    println(1.to(10))//与上面等价,打印 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
    
    println(1 to (10 ,2))//步长为2,从1开始打印 ,1,3,5,7,9
    println(1.to(10, 2)) 
    
    println(1 until 10 ) //不包含最后一个数,打印 1,2,3,4,5,6,7,8,9
    println(1.until(10))//与上面等价
    
println(1 until (10 ,3 ))//步长为2,从1开始打印,打印1,4,7

5.2 创建for循环

/**
     * for 循环
     * 
     */
    for( i <- 1 to 10 ){
      println(i)
    }

5.3 创建多层for循环

//可以分号隔开,写入多个list赋值的变量,构成多层for循环
    //scala中 不能写count++ count-- 只能写count+
    var count = 0;
    for(i <- 1 to 10; j <- 1 until 10){
      println("i="+ i +",	j="+j)
      count += 1
    }
    println(count);
    
    //例子: 打印小九九
    for(i <- 1 until 10 ;j <- 1 until 10){
      if(i>=j){
    	  print(i +" * " + j + " = "+ i*j+"	")
        
      }
      if(i==j ){
        println()
      }
      
    }

5.4 for循环中可以加条件判断,可以使用分号隔开,也可以不使用分号

//可以在for循环中加入条件判断
    for(i<- 1 to 10 ;if (i%2) == 0 ;if (i == 4) ){
      println(i)
}
  1. scala中不能使用count++,count—只能使用count = count+1 ,count += 1
  2. for循环用yield 关键字返回一个集合
  3. <-只会出现在for循环里面
  4. ->只会出现在k->v里面

5.5 while循环,while(){},do {}while()

//将for中的符合条件的元素通过yield关键字返回成一个集合
    val list = for(i <- 1 to 10  ; if(i > 5 )) yield i 
    for( w <- list ){
      println(w)
}

   /**
     * while 循环
     */
    var index = 0 
    while(index < 100 ){
    	println("第"+index+"次while 循环")
      index += 1 
    }
    index = 0 
    do{
    	index +=1 
    	println("第"+index+"次do while 循环")
}while(index <100 )

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 Hive on Spark 搭建过程的详细步骤: 1. 下载 Hadoop、Spark 和 Hive 的压缩包,并解压到指定目录下。 2. 配置环境变量,将 Hadoop、Spark 和 Hive 的 bin 目录添加到 PATH 路径中。 3. 修改 Hadoop 和 Spark 的配置文件。 - Hadoop 的配置文件:$HADOOP_HOME/etc/hadoop/core-site.xml、$HADOOP_HOME/etc/hadoop/hdfs-site.xml、$HADOOP_HOME/etc/hadoop/mapred-site.xml、$HADOOP_HOME/etc/hadoop/yarn-site.xml。 - Spark 的配置文件:$SPARK_HOME/conf/spark-env.sh、$SPARK_HOME/conf/spark-defaults.conf。 4. 配置 Hive on Spark。 - 将 $HIVE_HOME/lib 下的 spark 相关 jar 包复制到 $SPARK_HOME/jars 目录下。 - 修改 $HIVE_HOME/conf/hive-site.xml 文件,添加以下配置: ``` <property> <name>hive.execution.engine</name> <value>spark</value> </property> <property> <name>spark.master</name> <value>local[*]</value> <description>Master URL for the cluster manager.</description> </property> <property> <name>spark.submit.deployMode</name> <value>client</value> <description>Whether to launch the driver program locally ("client") or on one of the worker machines inside the cluster ("cluster")</description> </property> ``` 5. 启动 Spark 集群。 - 启动 Hadoop 集群。 - 启动 Spark 集群,可以使用以下命令: ``` $SPARK_HOME/sbin/start-all.sh ``` 6. 启动 Hive on Spark。 - 启动 HiveServer2,可以使用以下命令: ``` $HIVE_HOME/bin/hiveserver2 --service metastore & ``` - 启动 beeline 或 hive 命令行客户端,连接 HiveServer2。 7. 测试 Hive on Spark 是否正常运行。 - 在 beeline 或 hive 命令行客户端中执行以下命令: ``` CREATE TABLE test_spark(id INT, name STRING) USING org.apache.spark.sql.parquet OPTIONS (PATH '/tmp/test_spark'); INSERT INTO test_spark VALUES(1, 'test'); SELECT * FROM test_spark; ``` 如果查询结果正确,说明 Hive on Spark 搭建成功。 希望这些步骤能够帮助到你。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值