如何通过starburst连接器在R工作台上执行SQL?

问题描述 投票:0回答:1

什么: 需要使用 RStudio 工作台和 Trino 连接从数据库获取数据。

问题:总是出错。使用相同的方法连接到 presto 主机工作正常。 Trino 驱动程序版本是 443(撰写本文时最新版本)

约束:必须是 JDBC 连接。这是一个企业环境,因此测试或影响 RStudio 更改的能力有限,但某些软件包安装等可能会受到影响。

我需要什么:关于我的代码有什么问题的指导?如果问题不是我的代码,那么需要在 RStudio 工作台中进行哪些更改才能使其正常工作。

代码:

dyn.load(
  '/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.amzn2.0.1.x86_64/jre/lib/amd64/server/libjvm.so'
)

library(DBI)
library(RJDBC)

user <<- Sys.info()[['user']]
pwd <- rstudioapi::askForPassword(prompt = "Enter SSO Password")

home <- paste0("/mnt/efs/users/",user)
cert_path <- "/connections/starburst/"
certificate <- "SHA2-CA-Bundle.cer"
certificate2 <- "sep.jks"
jar_files = c(list.files(paste0(home,cert_path),
                         pattern="jar$",
                         full.names=T)
)

# driver_class <- "io.trino.jdbc.NonRegisteringTrinoDriver"
driver_class <- "io.trino.jdbc.TrinoDriver"

drv <- RJDBC::JDBC(driverClass = driver_class,
                   classPath = jar_files)
host <- 
  "jdbc:trino://myhost.com:111/hive"

server <-
  paste0(
    host,
    "?user=", user,
    "&password=", pwd,
    # "&SSL=true",
    "&SSLVerification=CA",
    # "&SSLTrustStorePath=", home, cert_path, certificate,
    "&SSLKeyStorePath=",home, cert_path, certificate2
  )

server

conn <<- DBI::dbConnect(drv, server)

query_input <- "SELECT count(*) FROM some.table"

output <- dbGetQuery(conn, query_input)

View(output)

dbDisconnect(conn)

错误:

Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set",  : 
  Unable to retrieve JDBC result set
  JDBC ERROR: Error executing query: Error fetching next (attempts: 4, duration: 2.01m)
  Statement: SELECT count(*) FROM some.table
r presto trino rstudio-server starburst
1个回答
0
投票

问题

您的问题的后续,我了解您需要建立从 RStudio Workbench 到 Trino(以前称为 PrestoSQL)数据库的 JDBC 连接来获取数据。但是,您在连接过程中遇到错误。使用相同的方法连接到 Presto 主机工作正常,但连接到 Trino 会导致错误。

解决方案

SSL 和防火墙可能主要是由于您的连接错误造成的。但要遵循最佳实践。

  1. 确保您使用正确的 Trino JDBC 驱动程序 (io.trino.jdbc.TrinoDriver) 并且版本兼容 您的 Trino 服务器版本。仔细检查连接详细信息,例如 作为主机、端口和数据库名称。虽然,关于司机你 提到您正在使用最新的 Trino 驱动程序版本 (443), 确保它与您的 Trino 服务器版本兼容。有时, 驱动程序版本和服务器之间可能存在兼容性问题 版本。
  2. 如果您的 Trino 服务器上启用了 SSL,请确保 SSL 设置 您的连接字符串中的内容是正确的。验证 SSL 的路径 证书(certificate 和certificate2)并确保它们是 可访问 RStudio Workbench。

终于

要通过星爆连接器在 R 工作台上执行 SQL,我在下面提供了基本的示例代码片段供您查看:

library(DBI)
library(RJDBC)

# Set up JDBC connection parameters
driver_class <- "io.trino.jdbc.TrinoDriver"
host <- "jdbc:trino://your_starburst_host:port"
user <- "your_username"
password <- "your_password"

# Set up SSL settings if applicable
# ssl <- "&SSL=true&SSLTrustStorePath=/path/to/truststore&SSLTrustStorePassword=your_truststore_password"

# Construct JDBC connection string
conn_string <- paste0(host, "?user=", user, "&password=", password)

# Establish JDBC connection
conn <- dbConnect(RJDBC::JDBC(driverClass = driver_class), conn_string)

# Execute SQL query
query <- "SELECT * FROM your_table"
result <- dbGetQuery(conn, query)

# Display or further process the query result
print(result)

# Close the JDBC connection
dbDisconnect(conn)

将 your_starburst_host、port、your_username、your_password 和 your_table 等占位符替换为您的实际连接详细信息和 SQL 查询。此外,如果您使用 SSL,请相应地取消注释并修改 ssl 变量。

问候,

© www.soinside.com 2019 - 2024. All rights reserved.