appName(s"Crossroadfree") 这个是个什么语法?
这个是字符串插值用法,从scala2.10.0版本开始,在s""的里面可以使用$val来嵌入变量。
val name="James"
println(s"Hello,$name")//Hello,James
相类似的插值还有f 和raw
val height=1.9d
val name="James"
println(f"$name%s is $height%2.2f meters tall")//James is 1.90 meters tall f 插值器是类型安全的。如果试图向只支持 int 的格式化串传入一个double 值,编译器则会报错。例如:
scala>raw"a\nb"
res1:String=a\nb 当不想输入\n被转换为回车的时候,raw 插值器是非常实用的。
https://docs.scala-lang.org/zh-cn/overviews/core/string-interpolation.html
// 文章里面的高级算法没看明白。
=================
spark2.0的新特性
https://databricks.com/blog/2016/05/11/apache-spark-2-0-technical-preview-easier-faster-and-smarter.html
https://www.iteblog.com/archives/1668.html
=============================
scala中object和class的区别?
class:
1 所有类的变量默认是public的,可以设置private,protected, public
2 scala的方法默认都是public的, 可以设置为private,protected,public甚至更多https://alvinalexander.com/scala/how-to-control-scala-method-scope-object-private-package
object就相当于static的class,object中定于的方法,属性都可以被静态调用。
===============================
看到同事有一个match语法,是个什么意思?
val date = CommonUtil.parseDate(args(3)) match {
case Some(_: LocalDate) => args(3)
case None => {
System.err.println("Date param should be yyyyMMdd pattern")
System.exit(1)
}
}
这个match就相当于是switch case,是scala里面的关键词
这个逻辑就是判断parseDate解析出来的是不是符合日期的格式。如果是的话,就把args(3) 赋值给date,否则的话,就退出。
=================================
同事的代码中看到这么一行
println(functions.input_file_name)
好像是说获取当前这个spark的rdd的列的名字?
运行的时候发现这个并没有啥用。
=================================
同事的代码看到这么一行:
sqlContext.sql("""
SELECT user_no,oper_code
FROM cui.operation_data_android
WHERE user_no <> 'null' AND oper_time>='20160101000000' AND oper_time<'20160114000000'
""").take(1)
三个引号是代表多行字符串。当我们的字符串有多行的时候,就使用这个多行字符串进行获取。
它也是支持字符串插值的。
val count = "2"
val weightGroupSql =
s"""
|SELECT first(cityId) as cityId,
| startLink,
| endLink,
| count(1)/${count} as count
|FROM
| test
| group by startLink, endLink
|
""".stripMargin
============================
看同事的代码有下面一行:
val junctionDriverBasicData = junctionDriverBasicDataLines
.map(item => Tuple1(DataParseUtil.parseJunctionDriverBasicData(item)))
.filter(!_._1.isEmpty)
.map(_._1.get)
询问他为什么这里有个Tuple1,理由是DataParseUtil.parseJunctionDriverBasicData 这个函数有可能返回null。
=================================
scala中的集合?
scala中集合分为可变集合和不可变集合