以下是idea里的代码
val result5 = spark.sql("select " +
"case " +
"WHEN `建成年份` < 1950 THEN '小于1950'" +
"WHEN `建成年份` >= 1950 AND `建成年份` < 1980 THEN '1950-1979' " +
"WHEN `建成年份` >= 1980 AND `建成年份` < 2010 THEN '1980-2009' " +
"WHEN `建成年份` >= 2010 THEN '2010-至今' " +
"end " +
"as `建成年份(区间)`, " +
"count(*) as `总数` " +
"from fj " +
"GROUP BY `建成年份(区间)`")
我想把以上的代码改为能在虚拟机的spark的Scala命令行能运行的sparksql语句,应该怎么改呢?
将上面的代码改为能在虚拟机的spark的Scala命令行运行的sparksql语句可以这样:
val result5 = spark.sql("SELECT
CASE
WHEN `建成年份` < 1950 THEN '小于1950'
WHEN `建成年份` >= 1950 AND `建成年份` < 1980 THEN '1950-1979'
WHEN `建成年份` >= 1980 AND `建成年份` < 2010 THEN '1980-2009'
WHEN `建成年份` >= 2010 THEN '2010-至今'
END AS `建成年份(区间)`,
COUNT(*) AS `总数`
FROM fj
GROUP BY `建成年份(区间)`")
需要注意的是,Scala语言中的字符串需要用双引号(")引起来,而不是单引号(')。
这样就可以在Scala命令行中执行这个查询了。
个人建议,以后idea写sparksql的时候使用stripMargin,在双引号中间再加一个双引号, 效果就是""" """,就不会有字符串拼接错误。