我正在寻找一种在 Scala 中从一台机器(客户端)查询另一台机器(远程客户端)的方法。像这样的查询:
df1 = sql(s"select * from database.table_name")
表和它的数据库在不同的平台上。
有什么建议或解决方案吗?
最佳答案
通过 SSH 连接
在您提到的评论中,您使用了 Paramiko(Python SSH 客户端)和 hive -e;查询
来实现你的目标。
如果您想走同样的路线,可以使用 scala-ssh连接到远程设备并使用您首选的本地数据库客户端执行查询。
在你的情况下,它可能看起来像 like this :
SSH(
"your-server.com",
HostConfig(PasswordLogin("username", PasswordProducer.fromString("password")))
) { client =>
for {
result <- client.exec("hive -e; the query")
} println("Result:\n" + result.stdOutAsString())
}
通过数据库客户端连接
更强大的解决方案是使用数据库客户端直接连接到远程数据库。您可以在 Scala 中使用许多库。一个流行的图书馆是 jooq .有一个 article outlining a few other scala database access options .
选择客户端库后,您需要连接到 MySQL 服务器。如果您已经设置了一个,请咨询数据库管理员以获取连接信息。如果您还没有设置,请研究如何设置 MySQL 实例。
您可以在这里浏览基本的数据库连接示例:https://www.jooq.org/doc/3.12/manual/getting-started/tutorials/jooq-in-7-steps/jooq-in-7-steps-step4/
这一行是您设置数据库管理员提供的服务器详细信息的地方:
String url = "jdbc:mysql://localhost:3306/library";
许多示例都是用 Java 编写的,但是一旦您了解了差异/相似之处,它们就可以轻松转换为 Scala。
关于mysql - 使用 Scala 从一个平台查询另一个平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58067011/