如何在Spark SQL中执行冗长的多行Hive查询?下面像查询:如何在spark中执行多行sql sql
val sqlContext = new HiveContext (sc)
val result = sqlContext.sql ("
select ...
from ...
");
如何在Spark SQL中执行冗长的多行Hive查询?下面像查询:如何在spark中执行多行sql sql
val sqlContext = new HiveContext (sc)
val result = sqlContext.sql ("
select ...
from ...
");
使用 “””代替,因此,例如
val results = sqlContext.sql ("""
select ....
from ....
""");
,或者,如果你想格式化代码,使用:
val results = sqlContext.sql ("""
|select ....
|from ....
""".stripMargin);
值得注意的是长度不是问题,只是写作。为此,您可以使用Gaweda建议的“”“或简单地使用字符串变量,例如通过使用字符串生成器来构建它。例如:
val selectElements = Seq("a","b","c")
val builder = StringBuilder.newBuilder
builder.append("select ")
builder.append(selectElements.mkString(","))
builder.append(" where d<10")
val results = sqlContext.sql(builder.toString())
截图没有的Val线,追加:) –
遗憾,太多的剪切和粘贴... :)。更新了答案... –
您可以在SQL代码或在每一行的最后一个反斜杠的开始/结束使用三引号。
val results = sqlContext.sql ("""
create table enta.scd_fullfilled_entitlement as
select *
from my_table
""");
results = sqlContext.sql (" \
create table enta.scd_fullfilled_entitlement as \
select * \
from my_table \
")
三重引号(包括双精度和单精度)也可以在Python中使用。反斜杠也是过时的。 – 2016-11-24 16:15:19
谢谢,编辑。过时了吗?并非如此,根据Stype指南https://www.python.org/dev/peps/pep-0008/ – Ricardo
请提高你的帖子,没有人愿意看到的代码 – mtoto