我看到数据正确地打印了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
有人面临类似的问题吗?任何解决方案?