Spark Dataframe到SQL服务器存储多个记录的错误数据

时间:2017-05-11 16:48:58

标签: scala spark-dataframe apache-spark-2.0

我看到数据正确地打印了dataframe.show,但在数据库中它存储了以前的值。

例如,我们有3条记录:

orderId| ItemSequence|OriginalId|price|groupId

dddeff |  1          |   201    | 1.5 |  8

dddeff |  2          |    202   | 2.5 |  3

dddeff |  3          |   203    | 3.0 |  9

当我们使用df.show打印到控制台时,上面的数据显示正确,当它持久存储到数据库时,值是

**orderId| ItemSequence|OriginalId|price|groupId**

dddeff |  1  |         201   |   1.5  |  8

dddeff |  2  |         202   |    2.5 |  3

dddeff |  3  |         201   |    1.5 |  8
val orderItemDF = sqlContext.createDataFrame(rdd)
orderItemDF.show()
try {
  orderItemDF.write
    .mode(SaveMode.Append)
    .jdbc(dbURL,
          schema + "." + StreamingConstants.DIGL_ORD_ITM,
          connectionProperties = prop)
  return true
} catch {
  case e: Exception =>
    println("Error in DIGL_ORD_ITM processing:" + e.getMessage)
    return false
}

请注意,我们对orderId和ItemSequence有唯一约束 我们使用Spark 2.0.2和Scala 2.11以及jdk1.8.0_121-b13

有人面临类似的问题吗?任何解决方案?

0 个答案:

没有答案