Читать таблицу SQL быстрее в R - PullRequest
0 голосов
/ 08 апреля 2019

Я работаю над блестящим проектом R, где мне нужно читать таблицы SQL из моего приложения Shiny. Я попытался использовать пакеты RODBC и RJDBC для одного и того же и обнаружил, что RJDBC быстрее. Но это все еще занимает много времени, чтобы прочитать.

Ниже приведен код, который я использовал:

LocationOfJDBC <- "/usr/lib/sqlserver_jdbc/sqljdbc_4.1/enu/jre7/sqljdbc41.jar"
options(java.parameters = "-Xmx8048m")
drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver" ,  LocationOfJDBC ,identifier.quote="`")

df<-dbGetQuery(mydb, "Select char1,char2,char3,int4,date5 from table1")

Этот запрос занимает около 90 секунд, чтобы прочитать 2,8 миллиона строк и 5 столбцов (3 символа, 1 int и 1 столбец даты).

Есть ли более быстрый способ чтения таблиц SQL в R ??

1 Ответ

0 голосов
/ 08 апреля 2019

Предполагая, что вы уже попробовали очевидные решения, такие как правильное индексирование, я бы предложил сохранить ваши большие таблицы sql в формате быстрой передачи файлов на диск. Используйте пакет fst, если вам нужны возможности запросов к вашим таблицам, или пакет перо, если нет. Существуют различные потоки, сравнивающие эти два пакета. Мой предпочтительный формат - это fst, поскольку он позволяет выполнять запросы с диска.

install.packages("fst")
library(fst)
?fst

В идеале, если вашему блестящему серверу не нужны все 2,8-метровые строки, я бы также предложил извлекать данные по мере необходимости.

...