有没有办法激活直接查询数据库的本地spark集群?

时间:2017-05-01 15:31:58

标签: sql-server r apache-spark apache-spark-sql sparklyr

我正在尝试使用sparklyr包连接到现有的MS SQL数据库,以便比使用RODBC包更快地查询数据。目前,我可以使用RODBC::odbcConnect()RODBC::sqlQuery()成功查询数据库。对于大多数用途,这工作正常,但是,我查询的数据库之一存储了非常大量的数据,当我的查询接近一百万行时,可能需要较长的时间。

例如,当我使用包装函数查询40个可能的网站之一时,我写了read_sql,从今年年初(2017-01-01)到今天(2017-05-01),那里结果数据框中大约有800,000行和7列。此功能大约需要30秒才能运行。

> system.time(read_sql(site = list("1"), start_date = "2017-01-01", end_date = Sys.time()))
   user  system elapsed 
  19.25    0.41   33.07 

如果我添加第二个网站,它的时间几乎翻了一倍,因为行数也增加了一倍,达到大约160万:

> system.time(read_sql(site = list("1", "2"), start_date = "2017-01-01", end_date = Sys.time()))
   user  system elapsed 
  37.51    1.03   57.92

read_sql()函数基本上只是将输入转换为适当的字符串,以使用RODBC::sqlQuery()查询SQL数据库中的相应表。

我知道有一种方法可以在spark中使用SQL查询,以获得所需的spark表输出。我的问题是,是否有一种方法可以激活可以直接查询数据库的本地火花簇,并希望加快更大查询的等待时间。

0 个答案:

没有答案