当我尝试通过新端口连接到数据库时,出现以下错误:
Error in curl::curl_fetch_memory(url, handle = handle) :
Recv failure: Connection reset by peer
已经为我提供了这个Python示例:
prestoconnector = presto.connect(host='presto.###.####.######.com',
port='###',
protocol='https',
username='{ad_username}',
password='{ad_password}')
(上面的#混淆了地址和端口号)
我已经使用R中的dbConnect函数更新了相应位置的所有内容,但是我看不到任何地方可以指定我们正在使用https协议。我相信这是我的问题。
我仔细阅读了RPresto软件包和DBI软件包的文档,但是没有发现任何帮助。搜索非常具有挑战性,因为结果中存在网址,因此搜索词https的误报很多。
presto <- dbConnect(
Presto(),
user = #####,
password = #####,
host = "presto.###.####.######.com",
port = ###,
catalog = "hive",
schema = ""
)
我希望能够连接,但无法连接。我可以通过不同的端口使用不同的设置进行连接。旧端口很快将不可用,所有连接都需要通过https在新端口上进行。我的团队是组织中唯一使用R的团队,因此很遗憾,内部支持没有帮助。
答案 0 :(得分:0)
我想出了如何将rpresto切入循环
在此处下载Presto驱动程序:https://repo1.maven.org/maven2/com/facebook/presto/presto-jdbc/0.225/presto-jdbc-0.225.jar
然后此代码将您连接到数据库
library(rJava)
library(RJDBC)
new_presto_driver <- JDBC(classPath = "path/to/driver/referenced/above.jar"))
presto_jdbc <- dbConnect(
new_presto_driver,
user = "dlucas",
password = "password",
url = "jdbc:presto://presto.###.com:PORT_NUMBER/CATALOG",
SSL = true
)
当然,请使用数据库的相关值替换PORT_NUMBER和CATALOG
如果在加载rJava时出错,则可能需要在终端中输入以下内容:
sudo R CMD javareconf
每次更新Java时,都可能需要重复此操作
@Lamanus和@ebyhr都提供了有用的线索,使我指出了正确的方向。
答案 1 :(得分:0)
我在使用RPresto和dplyr时遇到了麻烦,对我而言,这是由自签名的ssl证书引起的。我必须通过ssl_verifypeer = 0L
在客户端禁用证书验证才能使其工作:
library(dplyr)
library(RPresto)
library(httr)
userpwd <- paste('username', 'password', sep=":")
set_config( config( ssl_verifypeer = 0L, userpwd=userpwd ) )
db <- src_presto(
host= "https://my-hostname.com",
port= 443,
catalog= "catalog"
)
resultset <- tbl(db, sql("select id, field1 from my_db.my_table limit 5"))