7

DataFrameWriternewを使用してデータを JDBC データベースに書き戻す方法を理解しようとしています。ソースコードを見ると、それが可能であるように見えますが、これに関するドキュメントが見つからないようです。

私が試していることの簡単な例は次のようになります。

sqlContext.read.format("jdbc").options(Map(
  "url" -> "jdbc:mysql://localhost/foo", "dbtable" -> "foo.bar")
).select("some_column", "another_column")
.write.format("jdbc").options(Map(
  "url" -> "jdbc:mysql://localhost/foo", "dbtable" -> "foo.bar2")
).save("foo.bar2")

これは機能しません — 最終的に次のエラーが発生します。

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:200)

何か間違ったことをしているのか (たとえば、JDBCRDD ではなく DefaultSource に解決されるのはなぜですか?)、Spark の DataFrames API を使用して既存の MySQL データベースに書き込むことができないのかどうかはわかりません。

4

1 に答える 1