将 DataFrame 插入具有 AUTO_INCREMENT 列的 SQL 表中

yey*_*ilk 5 mysql apache-spark

我有一个 MySQL 表,其中包含一列AUTO_INCREMENT

\n\n
CREATE TABLE features (\n  id INT NOT NULL AUTO_INCREMENT,\n  name CHAR(30),\n  value DOUBLE PRECISION\n);\n
Run Code Online (Sandbox Code Playgroud)\n\n

我创建了一个DataFrame并想将其插入到该表中。

\n\n
case class Feature(name: String, value: Double)\nval rdd: RDD[Feature]\nval df = rdd.toDF()\ndf.write.mode(SaveMode.Append).jdbc("jdbc:mysql://...", "features", new Properties)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我收到错误,Column count doesn\xe2\x80\x99t match value count at row 1. 如果我删除id列,它就会起作用。如何在不更改架构的情况下将此数据插入表中?

\n

Dan*_*bos 4

您必须id在 DataFrame 中包含一个字段,但它的值将被忽略并替换为自动递增的 ID。那是:

case class Feature(id: Int, name: String, value: Double)
Run Code Online (Sandbox Code Playgroud)

然后id在创建Feature.