mysql - 使用 Scala 从一个平台查询另一个平台

标签 mysql scala dataframe

我正在寻找一种在 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/

相关文章:

regex - 用R中的数据帧中的正则表达式检测单词边界

python - 在 Pandas 中创建具有条件的新列

mySQL 'NOT IN' 到 vfp 等效值

java - jpa hibernate mysql 查询损坏

php - PHP 脚本是否需要等待 MySql 触发器完成?

Scala:定义带参数和可调用的函数

scala - Scala Slick,仅在不存在的情况下如何创建模式

python - 如何将行中的列值更新为 pandas 数据框中另一列中的特定值?

mysql - 将 MySql 从 5.1 升级到 5.6.10 后还原转储文件时出错

带有多个测试用例的 Scalatest 或 specs2