使用AUTO_INCREMENT列将DataFrame插入到SQL表中

时间:2015-07-09 11:15:10

标签: mysql apache-spark

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

CREATE TABLE features (
  id INT NOT NULL AUTO_INCREMENT,
  name CHAR(30),
  value DOUBLE PRECISION
);

我创建了一个DataFrame,并希望将其插入此表中。

case class Feature(name: String, value: Double)
val rdd: RDD[Feature]
val df = rdd.toDF()
df.write.mode(SaveMode.Append).jdbc("jdbc:mysql://...", "features", new Properties)

我收到错误Column count doesn’t match value count at row 1。如果我删除它有效的id列。如何在不更改架构的情况下将此数据插入表中?

1 个答案:

答案 0 :(得分:4)

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

case class Feature(id: Int, name: String, value: Double)

然后只需将id设置为0,或在创建Feature时设置任意数字。