【问题标题】:How can I connect to a MySQL database into Apache Spark using SparkR?如何使用 SparkR 将 MySQL 数据库连接到 Apache Spark?
【发布时间】:2016-08-20 18:54:43
【问题描述】:

我正在研究 Spark 2.0 和 SparkR 库。我想获取有关如何在 SparkR 中执行以下操作的示例代码?

使用 SparkR 连接到 MySQL 或任何其他 SQL 数据库。

编写 SQL 查询(如 SELECT、UPDATE 等)来修改该数据库中的表。

我知道使用 R 来完成。但是我需要一些帮助才能使用 Spark Sessions 或 SparkSQL 上下文。我正在使用 R Studio 进行开发。

此外,我们如何将这个 R 代码作为 Spark Ba​​tch 提交以定期连续运行?

【问题讨论】:

  • 突然想到的问题是,你为什么要这样做? Spark 是一种分布式处理环境,用于处理大量数据集,这些数据集最好使用计算机集群进行并行处理。相反,您有一个数据集存在于单个 MySQL 数据库的单个文件中,根据定义,该数据集存在于单个计算机上。可以针对如何执行此操作制定答案,但在 Spark 上执行此操作似乎效率非常低,而不是仅使用 Python 在包含 MySQL 数据库的本地计算机上执行此操作。
  • 感谢您的回答。但我只是在试验一些东西,它不是现实生活中的实现。我使用 Mysql 构建虚拟数据。我想按照使用 SparkR 的步骤操作,考虑到 mysql 工作台是不同的数据源。如果您能帮助我提供正确的代码并且我使用的是 Spark 2.0.0,我将不胜感激。
  • 了解@SCB,我们的 DBA 不鼓励我使用 jdbc 从 Spark 建立任何 SQL 连接,因为集群中的每个核心都会与数据库建立单独的连接并同时开始下载数据。推荐的方法是将数据导出到文件(如果您在 Hadoop 上使用 Spark,则在 HDFS 中)并使用以下命令从文件导入 DataFrame:df <- read.df(csvPath, "csv", header = "true", inferSchema = "true", na.strings = "NA")

标签: mysql r apache-spark sparkr


【解决方案1】:
jdbcurl <- "jdbc:mysql://xxx.xxx.x.x:xxxx/database"

data <- read.jdbc(jdbcurl, "tablename", user = "user", password = "password" )

【讨论】:

  • 谢谢 sahil。你能告诉我它是用于 sparkR 的吗,我正在使用 Spark 2.0.0
  • 嗨,运行此代码后,我遇到了错误。16/08/22 10:18:13 错误 RBackendHandler: jdbc on 5 failed 在 invokeJava(isStatic = FALSE, objId$id, methodName, . ..) : java.sql.SQLException: 没有合适的驱动程序
  • 是的,它适用于 SparkR。现在您必须将 jdbc jar 文件移动到 lib 中。
  • 我正在尝试在 spark 版本为 2.0.0 的 sparkR 环境中工作。
  • 请告诉我如何前进
猜你喜欢
  • 2014-09-15
  • 2023-03-10
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
  • 2019-09-24
  • 2017-01-12
  • 1970-01-01
相关资源
最近更新 更多