如何在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