pSQL-запрос к Redshift работает в DataGrip, но отменяется действием прерывания WLM при запуске через R? - PullRequest
1 голос
/ 27 сентября 2019

У меня есть запрос, который выполняется в течение нескольких секунд через dataGrip, но продолжает сбой при запуске через R;Я в своем уме на том, что может быть причиной этого.Я скопировал точную строку, которая используется для запроса в R, и он отлично работает через dataGrip.

Мое соединение с базой данных Redshift работает через R- Я могу выбирать строки и даже выполнять простые групповые операции, поэтому сомневаюсь, что это проблема.Вот мой код / ​​запрос

library(RPostgreSQL)
library(RJDBC)
library(tidyverse)
conn <- dbConnect(dbDriver("PostgreSQL"),
                  host = 'X',
                  port = 'Y',
                  user = 'A',
                  password = 'B',
                  dbname = 'C')


df = dbGetQuery(conn, str_remove_all(paste0("
SELECT 
  hour, 
  date, 
  group1, 
  group2, 
  ad_group, 
  SUM(factor1), 
  SUM(factor2), 
  SUM(factor3), 
  SUM(factor4) 
FROM table
WHERE 
  filter_col = ",value," 
GROUP BY 
  hour, 
  date, 
  group1, 
  group2, 
  group3;" 
),'\n'))

Ошибка, сгенерированная в консоли через несколько секунд:

Error in postgresqlExecStatement(conn, statement, ...) : 
  RS-DBI driver: (could not Retrieve the result : ERROR:  Query (X) cancelled by WLM abort action
DETAIL:  
  -----------------------------------------------
  error:  Query (X) cancelled by WLM abort action
  code:      1078
  context:   Query (X) cancelled by WLM abort action
  query:     0
  location:  abort_query_action.cpp:Z
  process:   wlm [pid=Y]
  -----------------------------------------------

)
Warning message:
In postgresqlQuickSQL(conn, statement, ...) :
  Could not create execute: (above query);

Edit-value - это одиночная числовая переменная.

Edit2 - Я только что проверил определения времени ожидания для кластера Redshift.Это установлено на 3 минуты, тогда как мой запрос был прерван менее чем за минуту

1 Ответ

0 голосов
/ 27 сентября 2019

Итак, очевидно, что у моего кластера Redshift был предел возврата в миллион строк;потому что dataGrip показывает только первые 500 строк при выполнении запроса и фактически обрабатывает ВСЕ его при загрузке или переходе на последнюю «страницу»;Я никогда не сталкивался с этой проблемой (пока я действительно не попытался загрузить все это и копаться в моих настройках кластера Redshift).Чтобы преодолеть это, я использую смещение и ограничение в моем запросе в цикле, чтобы загрузить все, что мне нужно.Надеюсь, это кому-нибудь поможет!

...