gpt4 book ai didi

sql-server - 从 SparklyR 将表加载到 SQL Server

转载 作者:行者123 更新时间:2023-12-01 21:58:16 24 4
gpt4 key购买 nike

截至 2017 年 10 月,是否可以将 Sparklyr Spark Data Frames 写入 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!!!!

最佳答案

您可以使用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"))

关于sql-server - 从 SparklyR 将表加载到 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46896407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com