【问题标题】:Writing R dataframe into AzureSQL DB from Azure Databricks notebook从 Azure Databricks 笔记本将 R 数据帧写入 Azure SQL DB
【发布时间】:2019-05-13 08:39:29
【问题描述】:

我正在尝试从 Azure Databricks 上的 R 笔记本连接到 Azure SQL DB。我收到以下错误: first argument is not an open RODBC channel In addition: Warning messages: 1: In odbcDriverConnect("Driver={ODBC Driver 17 for SQL Server};Server=tcp:########.database.windows.net,1433;Database=########;Uid=####@#######;Pwd=#########;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;") : [RODBC] ERROR: state 01000, code 0, message [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found 2: In odbcDriverConnect("Driver={ODBC Driver 17 for SQL Server};Server=tcp:########.database.windows.net,1433;Database=########;Uid=####@#######;Pwd=#########;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;") : ODBC connection failed

这是我的连接字符串:

library(RODBC)
dbhandle <- odbcDriverConnect("Driver={ODBC Driver 17 for SQLServer};Server=tcp:########.database.windows.net,1433;Database=########;Uid=#### 
@#######;Pwd=#########;Encrypt=yes;TrustServerCertificate=no;Connection 
Timeout=30;")

Query - res <- sqlQuery(dbhandle, 'SELECT * FROM table_name') `

谁能告诉我问题出在哪里。或者一些可能的替代方法,我可以使用它从 Azure Databricks 笔记本将数据帧写入 Azure SQL DB。

【问题讨论】:

    标签: r azure-sql-database rodbc azure-databricks


    【解决方案1】:

    您需要在设置连接之前安装 ODBC 驱动程序,因为 Azure Databricks 本身不包含此驱动程序。

    在单独的单元格中运行下面的shell脚本作为一个块一起安装驱动程序:

    %sh
    curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
    
    curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
    
    sudo apt-get update
    
    sudo ACCEPT_EULA=Y apt-get -q -y install msodbcsql17
    

    【讨论】:

      【解决方案2】:

      在您的 Databricks R 笔记本中

      library(SparkR)
      
      #replace<..> with your connection strings
      Conn <- "jdbc:sqlserver://<myserver>.database.windows.net:1433;database=<mydatabase>;user=<database_user>;password=<password>"
      
      #Convert a R dataframe to a Spark dataframe
      df <- as.DataFrame(df)
      
      write.jdbc(df, Conn, "SQLtablename", mode = "overwrite")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-03
        • 1970-01-01
        • 2022-07-27
        • 2021-10-22
        • 2020-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多