【发布时间】: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