Можно ли по состоянию на октябрь 2017 г. записывать фреймы данных 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
- спарклир 0.6.3
- Spark 2.0.1 создан для Hadoop 2.7.3
Что-то подобное есть для Cassandra в замечательном пакете crassy
, но я не уверен, есть ли соединитель или метод для SQL Server. Спасибо!
РЕШЕНО !!!
Я использовал драйвер jdbc для SQL-сервера. У меня был jdk 1.8, значит, я использовал драйвер для Java 8 на всех узлах:
spark.jars.packages com.microsoft.sqlserver:mssql-jdbc:6.2.2.jre8
Я поместил это в $SPARK_HOME/conf/spark-defaults.conf
.
Обычно я вхожу на SQL-сервер, используя аутентификацию Kerberos, но, поскольку она не была настроена на всех узлах моего тестового кластера, я сделал 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 !!!!