我在Google中搜索并发现并深入了解Scala中Anonymous,Singleton和Companion Object之间的差异
我发现在scala中,
没有引用名称的对象称为匿名对象.当您不想进一步重用它时,最好创建匿名对象.
Singleton对象是一个通过使用object关键字而不是类声明的对象.调用在singleton对象中声明的方法并不需要任何对象,也没有静态概念.因此,scala创建一个单例对象,为程序执行提供入口点.
在scala中,当你有一个与singleton对象同名的类时,它被称为伴随类,而singleton对象被称为companion对象.伴随类及其伴随对象都必须在同一源文件中定义.
那么,如果我们不想重用,为什么Anonymous对象是好的呢?Singleton很容易理解,但Companion Object的真正目的是什么?我的意思是编写伴侣类和伴随对象的规则背后的故事都必须在同一个源文件中定义?Companion Object的唯一原因是我们有一个与singleton对象同名的类吗?
我想Scala中的这些功能应该有一些重要的原因.有什么解释或者是否有资源可以从中了解有关Scala对象的更多信息?
我想使用sbt部署并提交一个spark程序,但是它会抛出错误。
码:
package in.goai.spark
import org.apache.spark.{SparkContext, SparkConf}
object SparkMeApp {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("First Spark")
val sc = new SparkContext(conf)
val fileName = args(0)
val lines = sc.textFile(fileName).cache
val c = lines.count
println(s"There are $c lines in $fileName")
}
}
Run Code Online (Sandbox Code Playgroud)
build.sbt
name := "First Spark"
version := "1.0"
organization := "in.goai"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1"
resolvers += Resolver.mavenLocal
Run Code Online (Sandbox Code Playgroud)
在第一/项目目录下
build.properties
bt.version=0.13.9
Run Code Online (Sandbox Code Playgroud)
当我尝试运行sbt package下面给出的抛出错误时。
[root@hadoop first]# sbt package …Run Code Online (Sandbox Code Playgroud) 如果我们将使用 SQL 查询来实现每个部门的第二大值的输出,那么我现在有一个表,department并且value现在可用,那么我们可以这样写:
select * from (SELECT department, asset_value, DENSE_RANK() over (partition by DEPARTMENT order by ASSET_VALUE) as x from [User1].[dbo].[UsersRecord]) y where x = 2;
Run Code Online (Sandbox Code Playgroud)
但是,在 Apache Spark 中,如果我们有不使用 SparkSQL 的限制,并且必须仅使用 DataFrame 实现输出,那么我们应该如何编写 Scala 代码?
我通过文档的帮助从我的角度进行了尝试,但无法弄清楚。
我的代码:
package com.tg.testpack1
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.row_number
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql._
import org.apache.spark.sql.functions._
object class2
{
def main(args: Array[String])
{
val sparksessionobject = SparkSession.builder()
.master("local")
.config("spark.sql.warehouse.dir", "C:/Users/ox/spark/spark/spark-warehouse")
.getOrCreate()
sparksessionobject.conf.set("spark.sql.shuffle.partitions", 4)
sparksessionobject.conf.set("spark.executor.memory", "2g")
import sparksessionobject.sqlContext.implicits._
val …Run Code Online (Sandbox Code Playgroud)