2017-10-23 4 views
0

2017年10月現在、Sparklyr Spark Data FramesをSQL Serverに書き込むことは可能ですか?SparklyRから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"’ 

私は現在実行している:Hadoopの2.7用に構築された

  • dplyr 0.7.4
  • sparklyr 0.6.3
  • スパーク2.0.1を.3

C素晴らしいcrassyパッケージのassandraですが、SQL Server用のコネクタやメソッドがあるかどうかはわかりません。ありがとう!

SOLVED !!!

私はSQLサーバー用にjdbcドライバを使用しました。私は、すべてのノード上でJava 8用のドライバを使用意味するように私は、JDK 1.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上で実行されている)場合には、そのようなのようになります:Windowsの場合

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") 
) 

を、ちょうどauthenticationSchemeオプションが含まれていません。

@ user6910411に大きな感謝!!!!

答えて

1

sparklyr::spark_write_jdbc関数を使用すると、Rでデータを収集せずにSparkから直接データを書き込むことができます。動作させるには、ドライバとワーカーノードでan appropriate JDBC driverが必要です。

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

と仮定すると、ドライバが既にspark.jars.packages使用して含まれている、あなたは次のように何かをする必要があります

関連する問題