我正在研究 Scala Edition1 https://www.artima.com/pins1ed/traits.html编程中的特征一章中的代码示例
由于我的错字,遇到了一个奇怪的行为。尽管覆盖方法的返回类型Unit与String. 但是在对象上调用该方法时,它返回 Unit 但不打印任何内容。
trait Philosophical {
def philosophize = println("I consume memory, therefore I am!")
}
class Frog extends Philosophical {
override def toString = "green"
override def philosophize = "It aint easy to be " + toString + "!"
}
val frog = new Frog
//frog: Frog = green
frog.philosophize
// no message printed on console
val f = frog.philosophize
//f: Unit = ()
Run Code Online (Sandbox Code Playgroud)
但是当我在重写的方法中给出显式返回类型时,它给出了一个编译错误:
class Frog extends Philosophical …Run Code Online (Sandbox Code Playgroud) 我试图覆盖火花属性,例如num-executors通过spark-submit提交应用程序,如下所示:
spark-submit --class WC.WordCount \
--num-executors 8 \
--executor-cores 5 \
--executor-memory 3584M \
...../<myjar>.jar \
/public/blahblahblah /user/blahblah
Run Code Online (Sandbox Code Playgroud)
但它运行的默认执行程序数为2.但是如果我添加,我可以覆盖属性
--master yarn
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么会这样吗?有趣的是,在我的应用程序代码中,我将master设置为yarn-client:
val conf = new SparkConf()
.setAppName("wordcount")
.setMaster("yarn-client")
.set("spark.ui.port","56487")
val sc = new SparkContext(conf)
Run Code Online (Sandbox Code Playgroud)
有人可以说明该选项的--master工作原理
我有一个传递给shell脚本的日期,必须在其中加上一个月。例如:
passed_date=2017-06-01
Run Code Online (Sandbox Code Playgroud)
我需要添加1个月:
converted_date=2017-07-01
Run Code Online (Sandbox Code Playgroud)
我如何在shell脚本中实现这一目标。我尝试将日期转换为自纪元以来的秒数,然后添加1个月,例如:
date +%s -d 20170601 -d "+1 month"
Run Code Online (Sandbox Code Playgroud)
然后将秒转换回yyyy-mm-dd
date -d@$(date +%s -d 20170601 -d "+1 month") +%Y-%m-%d
Run Code Online (Sandbox Code Playgroud)
但基本上是将当前系统日期添加1个月
我知道Scala List可以创建为:
val l = List(1,2,3)
Run Code Online (Sandbox Code Playgroud)
执行上述语句时,幕后发生了什么?这里调用apply方法吗?
根据scala文档:对于序列,apply是位置索引 http://docs.scala-lang.org/overviews/collections/seqs.html
那么,是否有2个apply方法,一个用于位置索引,另一个用作对象创建的工厂方法?