通过 ODBC 将 RStudio 桌面连接到带有 M1 芯片的 Mac OS Ventura(13.4) 上的 Databricks Community Edition

问题描述 投票:0回答:1

有人在 MAC OS Ventura (13.4) 和 M1 芯片上成功使用/配置带有 databricks 社区版的 Rstudio 桌面的 ODBC 吗?

databricks 社区版的链接在这里 --> link

我在这里下载了 MAC OS 驱动程序 --> link

我尝试在这里使用 ODBC 管理器 --> link

Rstudio/Posit 似乎建议我们需要使用 unixODBC,我在这里得到了 --> link。我尝试使用 home-brew 安装 unixODBC,但遇到路径问题并决定手动下载。

我尝试根据这些参数配置驱动程序/dsn -->link。我还添加了 UID 和 PWD key:value,因为社区版不允许创建个人令牌。

Rstudio多次提供

Error: nanodbc/nanodbc.cpp:1118: 00000: [unixODBC][Driver Manager]Data source name not found and no default driver specified

当我进入新连接时,我只看到 Spark 和 Livy,没有 Simba Spark Odbc 驱动程序。当我使用 home-brew 中的 unixODBC 以及在

ODBCSYSINI=/opt/homebrew/etc
中指定的
~/.Renviron
(如此处指定的链接)时,我至少可以在 Rstudio 连接选项卡的新连接窗口中看到 Simba Spark Odbc 驱动程序。

我知道我在这里没有给出太多细节(即 reprex),但试图了解如何使用 /test Rstudio 桌面和 databricks 来处理大于 RAM 的数据集。在本地测试一下是否可以复制到我的办公环境中。使用这些 ODBC 驱动程序等对我来说是新的。感谢您提供的任何资源/示例/帮助。

odbc rstudio databricks desktop databricks-community-edition
1个回答
0
投票

Databricks 刚刚在您共享的链接中发布了适用于 MacOS 的新的 ARM64 兼容 ODBC 驱动程序。一个主要问题是缺乏 ARM 编译,导致 RStudio 和 R 包搜索包时出现问题。我经历的粗略步骤:

  1. 安装 ODBC 管理器:
    brew install unixodbc
  2. 使用
    .ini
     检查以确保 
    odbcinst -j
  3. 文件的安装和路径
  4. 安装最新版本的 Databricks ODBC 驱动程序。默认安装在路径
    /Library/simba/spark
  5. 将以下命令复制并粘贴到 CLI 中:
echo "\n" >> /opt/homebrew/etc/odbcinst.ini
echo "[databricks_spark_sql]" >> /opt/homebrew/etc/odbcinst.ini
echo "Driver=/Library/simba/spark/lib/libsparkodbc_sb64-universal.dylib" >> /opt/homebrew/etc/odbcinst.ini
echo "ODBCInstLib=/opt/homebrew/opt/unixodbc/lib/libodbcinst.2.dylib" >> /Library/simba/spark/lib/simba.sparkodbc.ini

这些命令将

databricks_spark_sql
驱动程序位置添加到
unixODBC
驱动程序管理器使用的“连接器配置文件”中。它还使
unixODBC
实用程序可供
databricks_spark_sql
驱动程序使用。完成后,关闭终端并打开 RStudio。

  1. .Rprofile
    添加一个条目,设置一个环境变量,告诉 R 在哪里查找 odbc 的配置文件。这是存储
    odbcinst.ini
    文件的位置。在 RStudio 的项目中,您可以通过使用以下命令打开 .Rprofile 来执行此操作:
usethis::edit_r_profile(scope = 'project')

然后,在 .Rprofile 中,粘贴以下内容:

Sys.setenv(ODBCSYSINI='/opt/homebrew/etc')

重新启动 R 会话并检查新的 ODBC 驱动程序是否已被识别/正确列出:

odbc::odbcListDrivers()

使用 Databricks 的文档通过 ODBC 连接到 Databricks 的过程。从

dbplyr
来看,它可能看起来像这样:

db_odbc <- DBI::dbConnect(
    drv = odbc::odbc(),
    driver          = 'databricks_spark_sql',
    server          = 'adb-[...].azuredatabricks.net',
    host            = 'adb-[...].azuredatabricks.net',
    port            = 443,
    httppath        = '/sql/1.0/warehouses/01d71fe07e891bb6',
    catalog         = '...',
    schema          = '...',
    thrifttransport = 2,
    ssl             = 1,
    authmech        = 3,
    uid             = 'token',
    pwd             = keyring::key_get(service = 'simba_connector_token')
)
© www.soinside.com 2019 - 2024. All rights reserved.