如何将 .sql 文件加载到 Scala?

Wan*_*ing 3 sql hive scala

我有一个很长的 SQL 查询存储在 data.sql 文件中。我想在我的 Scala 代码中执行这个文件。使用 sqlQuery 字符串,我使用 spark.sql(sqlQuery) 来执行 sql。但是对于 .sql 文件,我应该如何执行它?

非常感谢!

Jag*_*rma 5

你可以试试这个流程 ( Spark 1.6.2, Scala 2.10.5)

使用查询创建文件

$ cat query.sql
select * from mydb.mytable
Run Code Online (Sandbox Code Playgroud)

如果你有HDFS,你可以上传文件到HDFS(比如在/hdfs/path/query.sql)如果你在本地有,那就说它在/local/path/query.sql

在火花壳中运行

$ spark-shell
:
:
Created sql context (with Hive support)..
SQL context available as sqlContext.
Run Code Online (Sandbox Code Playgroud)

(如果从本地加载)

scala> val myQueryFile = sc.textFile("file:///local/path/query.sql")
Run Code Online (Sandbox Code Playgroud)

(如果从 加载HDFS)

scala> val myQueryFile = sc.textFile("/hdfs/path/query.sql")
Run Code Online (Sandbox Code Playgroud)

执行并查看结果

scala> val myQuery = myQueryFile.take(1)
scala> val myResultDf = sqlContext.sql(myQuery(0))
scala> myResultDf.show
Run Code Online (Sandbox Code Playgroud)


Krz*_*sik 4

您可以简单地使用scala.io.Source:

import scala.io.Source

val sqlQuery = Source.fromFile("path/to/data.sql").mkString //read file
spark.sql(sqlQuery) //execute query
Run Code Online (Sandbox Code Playgroud)