ошибка: маркер сеанса AWS не найден при использовании rs_create_table - PullRequest
1 голос
/ 24 мая 2019

Я запустил следующий код:

install.packages("aws.ec2metadata", repos = c(cloudyr = "http://cloudyr.github.io/drat", getOption("repos")))

install.packages(c('devtools', 'httr', 'aws.s3', 'Rcpp', 'DBI'))

library(RPostgreSQL)
library(redshiftTools)
library(RPostgres)


devtools::install_github("sicarul/redshiftTools")

drv <- dbDriver("PostgreSQL")

pconn_rsql <- dbConnect(drv,
                         host = "host",
                         port = port,
                         user = "user",
                         password = "password",
                         dbname = "dbname")

rs_create_table(df = mtcars,
            dbcon = conn,
            table_name = "table_name",
            bucket = "my-bucket",
            region = "region",
            access_key = "acess-key",
            secret_key = "secret-key",
            split_files = 4)

dbDisconnect(pconn_rsql)

Он прекрасно работал как скрипт до того утра, когда я обновил пакеты R. Я проверил GitHub для каких-либо подсказок по этому поводу, но ни один не работал. Кто-нибудь уже сталкивался с этим и может пролить свет на это?

1 Ответ

0 голосов
/ 27 мая 2019

Столкнулся с подобной проблемой, один из способов, который вы могли бы сделать, это вернуться к version 0.3.900 (это было то, что работало для меня).

В качестве альтернативы вы можете исправить базовый код source.Загрузите версию github и внесите некоторые изменения перед установкой.

1.скрипт internal.R функция s3ToRedshift добавление else if условие для session

  if (nchar(iam_role_arn) > 0) {
    credsStr = sprintf("iam_role '%s'", iam_role_arn)
  } else if (nchar(session) > 0){
    credsStr = sprintf("credentials 'aws_access_key_id=%s;aws_secret_access_key=%s;token=%s'", access_key, secret_key, session)
  } else {
    # creds string now includes a token in case it is needed.
    credsStr = sprintf("credentials 'aws_access_key_id=%s;aws_secret_access_key=%s'", access_key, secret_key)
  }

2.скрипт replace.R функция rs_replace_table добавить Sys.setenv

После split_files = pmin(split_files, numRows) добавить следующие строки.

  # Set env variables for S3 upload
  Sys.setenv(
    'AWS_DEFAULT_REGION'=region,
    'AWS_ACCESS_KEY_ID'=access_key,
    'AWS_SECRET_ACCESS_KEY'=secret_key,
    'AWS_IAM_ROLE_ARN'=iam_role_arn
  )

Так это будет выглядеть примерно так:

split_files = pmin(split_files, numRows)

  # Set env variables for S3 upload
  Sys.setenv(
    'AWS_DEFAULT_REGION'=region,
    'AWS_ACCESS_KEY_ID'=access_key,
    'AWS_SECRET_ACCESS_KEY'=secret_key,
    'AWS_IAM_ROLE_ARN'=iam_role_arn
  )
  prefix = uploadToS3(df, bucket, split_files)

Установите это, и rs_create_table теперь должно работать, хотя другие функции не проверялись.

...