【问题标题】:Load tables into SQL Server from SparklyR从 SparklyR 将表加载到 SQL Server
【发布时间】:2018-04-04 10:01:24
【问题描述】:

截至 2017 年 10 月,是否可以将 Sparklyr Spark 数据帧写入 SQL Server?

我收到了这个错误:

> DBI::dbWriteTable(con, "DZ_test", for_test)
Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘dbWriteTable’ for signature 
‘"Microsoft SQL Server", "character", "tbl_spark"’

我目前正在跑步:

  • dplyr 0.7.4
  • sparklyr 0.6.3
  • 为 Hadoop 2.7.3 构建的 Spark 2.0.1

在美妙的crassy 包中有类似 Cassandra 的东西,但不确定是否有用于 SQL Server 的连接器或方法。谢谢!

解决了!!!

我使用 SQL Server 的 jdbc 驱动程序。我有 jdk 1.8,这意味着我在所有节点上都使用了 Java 8 驱动程序:

spark.jars.packages com.microsoft.sqlserver:mssql-jdbc:6.2.2.jre8

我把这个放在$SPARK_HOME/conf/spark-defaults.conf

我通常使用 kerberos 身份验证登录 SQL 服务器,但由于未在我的测试集群的所有节点上设置该身份验证,因此我为感兴趣的数据库创建了 SQL 登录名(需要管理员)并通过该用户名/密码进行连接.

spark_write_jdbc(my_sdf, "my_sdf", 
                 options = list(
                   url=paste0("jdbc:sqlserver://cwjensql10.cwjwin.local;",
                              "databaseName=HER_NILM;",
                              "user=HER;",
                              "password=Test1;"),
                   driver="com.microsoft.sqlserver.jdbc.SQLServerDriver")
)

如果你想使用 Kerberos 身份验证(并且在 linux 上运行),它看起来像这样:

spark_write_jdbc(my_sdf, "my_sdf", 
                 options = list(
                   url=paste0("jdbc:sqlserver://cwjensql10.cwjwin.local;",
                              "databaseName=HER_NILM;",
                              "integratedSecurity=true;",
                              "authenticationScheme=JavaKerberos;"),
                   driver="com.microsoft.sqlserver.jdbc.SQLServerDriver")
)

对于 Windows,不要包含 authenticationScheme 选项。

非常感谢@user6910411!!!!

【问题讨论】:

    标签: sql-server r apache-spark dplyr sparklyr


    【解决方案1】:

    您可以使用 sparklyr::spark_write_jdbc 函数直接从 Spark 写入数据,而无需在 R 中收集数据。要使其正常工作,您需要在驱动程序和工作程序节点上提供 an appropriate JDBC driver

    假设驱动程序已使用spark.jars.packages 包含在内,您将需要类似以下内容:

    spark_write_jdbc(
      df, "some_name", 
      options=list(
        url="jdbc:sqlserver://...",
        driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-22
      • 1970-01-01
      • 2014-12-06
      相关资源
      最近更新 更多