2017-08-16 8 views
2

私は戻って私のようにバリケードを打ってきたデータベースへのデータの書き込みをしようとすると、私は、SparkR 1.6.0でJDBCソースに書き込む方法は? SparkR 1.6.0で

jdbc_url <- "jdbc:mysql://localhost:3306/dashboard?user=<username>&password=<password>" 

df <- sqlContext %>% 
    loadDF(source  = "jdbc", 
     url  = jdbc_url, 
     driver  = "com.mysql.jdbc.Driver", 
     dbtable = "db.table_name") 

しかし、計算を実行した後、次のコードでJDBCソースから読み取ることができますこのためのパッチと言われます、私はthisを見つけたウェブを中心に探ししようと...

write.df(df  = df, 
     path = "NULL", 
     source = "jdbc", 
     url  = jdbc_url, 
     driver = "com.mysql.jdbc.Driver", 
     dbtable = "db.table_name", 
     mode = "append") 

...戻って...

ERROR RBackendHandler: save on 55 failed 
Error in invokeJava(isStatic = FALSE, objId$id, methodName, ...) : 
    java.lang.RuntimeException: org.apache.spark.sql.execution.datasources.jdbc.DefaultSource does not allow create table as select. 
    at scala.sys.package$.error(package.scala:27) 
    at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.apply(ResolvedDataSource.scala:259) 
    at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:148) 
    at org.apache.spark.sql.DataFrame.save(DataFrame.scala:2066) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.spark.api.r.RBackendHandler.handleMethodCall(RBackendHandler.scala:141) 
    at org.apache.spark.api.r.RBackendHandler.channelRead0(RBackendHandler.scala:86) 
    at org.apache.spark.api.r.RBackendHandler.channelRead0(RBackendHandler.scala:38) 
    at io.netty.channel.SimpleChannelIn 

エラーはバージョン2.0.0から含まれていました。関数read.jdbcwrite.jdbcも取得します。

この質問では、私はSparkR v1.6.0に固執していると仮定します。 JDBCソースに書き込む方法はありますか(つまり、SparkRのDataFrameWriter.jdbc()を使用できる回避策がありますか?)

+0

答えのような音は「いいえ」です。あなたが書いたバージョンははっきりと書くことはできません。スタックしている修正プログラムのパッチを追加できない場合。 – duffymo

+0

答えがあるかもしれないと思っていましたが、とにかく仕事について質問したいと思っていました。私はまだSparkRが新しく、このような状況ではドキュメントにないものがあるかもしれません。もし私が決定的な反応を得るなら、私は答えとして "いいえ"を受け入れるでしょう。 –

+0

何がアップグレードできないのですか? Rパッケージのアップグレードだけではいけませんか? – duffymo

答えて

0

簡単な答えは、バージョン2.0.0までは、SparkRではJDBC書き込みメソッドがサポートされていませんでした。

関連する問題