(1)Scala中创建多行字符串使用Scala的Multiline String。
在Scala中,利用三个双引号包围多行字符串就可以实现。
代码实例如:
val foo = """a
bc
d"""
运行结果为:
a
bc
d
(2) 上述方法存在一个缺陷问题,输入的内容,带有空格、\t之类,导致每一行的开始位置不能整洁对齐。
而在实际应用场景下,有时候我们就是确实需要在scala创建多少字符串,但是每一行需要固定对齐。
解决该问题的方法就是应用scala的stripMargin方法,在scala中stripMargin默认是“|”作为出来连接符,在多行换行的行头前面加一个“|”符号即可。
代码实例:
val speech = """abc
|def""".stripMargin
运行的结果为:
abc
ldef
(3) spark sql 中的应用:
val resultDf_word = spark_sc.spark.sqlContext.sql(
"""
| SELECT lang,
| COUNT(1) AS pv,
| COUNT(DISTINCT did) AS uv,
|
| COUNT(XXX) AS return_pv,
| COUNT(XXX) AS return_uv,
|
| FROM resultDf
| where XXX >= 0 and len(XXX) > 0
|
| GROUP BY XXX,XXX, lang
""".stripMargin)