Как загрузить файл .sql в Scala? - PullRequest
0 голосов
/ 08 мая 2018

У меня длинный SQL-запрос, хранящийся в файле data.sql. Я хочу выполнить этот файл в моем коде Scala. Со строкой sqlQuery я использую spark.sql (sqlQuery) для выполнения sql. Но с файлом .sql, как мне его выполнить?

Большое спасибо!

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

Вы можете попробовать этот поток (Spark 1.6.2, Scala 2.10.5)

Создать файл с запросом

$ cat query.sql
select * from mydb.mytable

Если у вас есть HDFS, вы можете загрузить файл на HDFS (скажем, на /hdfs/path/query.sql) Если у вас есть это локально, то скажите, что это в /local/path/query.sql

Бег в искровой оболочке

$ spark-shell
:
:
Created sql context (with Hive support)..
SQL context available as sqlContext.

(при загрузке с локального)

scala> val myQueryFile = sc.textFile("file:///local/path/query.sql")

(при загрузке с HDFS)

scala> val myQueryFile = sc.textFile("/hdfs/path/query.sql")

Выполнить и просмотреть результат

scala> val myQuery = myQueryFile.take(1)
scala> val myResultDf = sqlContext.sql(myQuery(0))
scala> myResultDf.show
0 голосов
/ 08 июня 2019

Предположим, что у вас есть файл .sql , представленный ниже, который содержит данные, подобные приведенным ниже, и разделен полуколонкой (;).

create table table1(id int, name string);
create table table2(id int, login_time timestamp, logout_time timestamp)

Используя приведенный ниже код, он прочитает файл и преобразует содержимое в строку. Затем он разделит строку на полуколонны, а затем последовательно выполнит каждый sql.

sc.textFile("/data.sql").collect().mkString.split(";").foreach(qry => spark.sql(qry))

sc означает sparkContext. Это создает соединение с кластером. Вам не нужно определять эту переменную, вы можете использовать sc.textFile напрямую. Точно так же spark является переменной сеанса искры. Вам не нужно определять это, вы можете напрямую использовать spark.sql для выполнения sqls.

0 голосов
/ 08 мая 2018

Вы можете просто использовать scala.io.Source:

import scala.io.Source

val sqlQuery = Source.fromFile("path/to/data.sql").mkString //read file
spark.sql(sqlQuery) //execute query
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...