Spark Mysql的快速更新

时间:2016-09-06 07:46:34

标签: mysql scala apache-spark

我有一张包含4百万条记录的表格,每天都有新数据出现,我需要在处理新数据后更新表格。目前我正在为此目的这样做。我正在使用scala。

val batchSize = 1000
df.rdd mapPartitions (_ grouped batchSize) foreach { batch =>
  {
    val connection = getConnection();
    val statement = connection.createStatement();
    batch.foreach { row =>
      val query = "UPDATE temp SET file_name='" + row.get(0) + " WHERE id=" + row.get(3);
      statement.executeUpdate(query);

    }
    connection.close();
  }
}

这不是确切的查询,但我这样做。这需要大约1小时来更新表格。我需要提高性能。我怎样才能实现表现。

1 个答案:

答案 0 :(得分:1)

  1. 如果未对SQL数据库建立索引,请根据row.get(3)字段添加索引。
  2. 如果SQL数据库不是innoDB,请将其设为innoDB - innoDB更适合并发操作(并发所需)
  3. 看起来像火花的并发部分是正确的,应该从基础设施(在这种情况下是数据库)进一步优化