Databricks 上的 RMariaDB

Posted

技术标签:

【中文标题】Databricks 上的 RMariaDB【英文标题】:RMariaDB on Databricks 【发布时间】:2022-01-20 11:28:32 【问题描述】:

我正在尝试让 R(通过笔记本或 RStudio)连接到 Databricks Azure 10.1 上的 MariaDB。但是,无论我是在集群的库选项卡中添加 RMariaDB 还是通过 RStudio 中的 install.packages("RMariaDB") 都会失败,因为:

-----------------------------[ ANTICONF ]-----------------------------
Configure could not find suitable mysql/mariadb client library. Try installing:
* deb: libmariadb-dev (Debian, Ubuntu)
* rpm: mariadb-connector-c-devel | mariadb-devel | mysql-devel (Fedora, CentOS, RHEL)
* csw: mysql56_dev (Solaris)
* brew: mariadb-connector-c (OSX)
If you already have a mysql client library installed, verify that either
mariadb_config or mysql_config is on your PATH. If these are unavailable
you can also set INCLUDE_DIR and LIB_DIR manually via:
R CMD INSTALL --configure-vars='INCLUDE_DIR=... LIB_DIR=...'
--------------------------[ ERROR MESSAGE ]----------------------------
<stdin>:1:10: fatal error: mysql.h: No such file or directory
compilation terminated.
-----------------------------------------------------------------------

python、R 和 java jar 文件我已经安装在 databricks 上,但不是 C 库。我找到了要下载到笔记本电脑的 ubuntu 库,但 databricks 中的“上传库”功能似乎只需要 jar。

有人知道如何让 R 在 Databricks 中与 MariaDB 对话吗?或者,是否可以在笔记本的 python 单元中进行查询(我有这个工作)并访问 R 单元中的数据?

谢谢

【问题讨论】:

Databricks 支持用于 Python 包的 Conda。 Conda 在某种程度上支持 R,也许您需要的软件包可以通过 Conda 获得? 我不认为它本身就是包,Georg。我可以通过 databricks 或 RStudio 中的正常路径安装它。问题是它似乎有一个 mariadb 的 c 库的先决条件,我不知道如何安装它。我对其他 R 包没有问题,例如 sparkly、tidy verse 或 xts。 完全正确,应该包含在 Conda 中,所以它应该以这种方式工作 【参考方案1】:

在 Spark/Databricks 上执行此操作的最简单方法是使用 spark.read.jdbc(请参阅 docs) - 您只需提供 JDBC URL、用户名和密码。

sparkR.session()
jdbcUrl <- "jdbc:mysql://<host>:3306/databasename"
df <- read.jdbc(jdbcUrl, "table", user = "username", password = "password")

【讨论】:

我会试试的,亚历克斯。我确实有一个通过 python 和 JDBC 工作的连接。如果它返回 R 中的数据,那么我们就在那里。谢谢,我试过后会报告的。 主要问题是数据的大小。如果它真的很大,你想直接把它喂给 spark 没有任何 R 或 Python 解决方法 明白,乔治。 SQL 设置为仅在短时间内返回数​​据,而我正在寻找的是将在本地运行良好的 Shiny 应用程序带到云上。 Databricks 中有仪表板,但它们是静态的。我非常清楚内存问题。 我尝试了这两个建议(感谢您的提示),但似乎都没有解决问题。我尝试使用 Conda 安装 r-mariadb 包,在笔记本中使用 %sh 单元格,但它显示:'/bin/bash: conda: command not found'。这可能适用于 ML 集群,但事实并非如此。 read.jdbc 不允许我指定一个 sql 查询,只指定一个数据库表名,但我需要在它到达笔记本之前加入和过滤。 Databricks 中关于 R 的信息非常少。我想我会选择 Kubernetes 路线。谢谢大家

以上是关于Databricks 上的 RMariaDB的主要内容,如果未能解决你的问题,请参考以下文章

任务在 Databricks 上的 Scala 中不可序列化

Databricks 上的 Spark - 缓存 Hive 表

Azure Databricks 上的最大消息大小

如何将压缩的 TSV 文件读取到 Databricks 上的数据框?

无法通过 Databricks 上的本地文件 API 访问文件

加入 Spark Databricks 上的数据爆炸