Update statement failed with "Multiple input rows matched for same row" in version 1.2.0,
Posted by yixu2001 on Oct 18, 2017; 7:14am
URL: http://apache-carbondata-dev-mailing-list-archive.168.s1.nabble.com/Update-statement-failed-with-Multiple-input-rows-matched-for-same-row-in-version-1-2-0-tp24222.html
dev
In carbondata version 1.2.0, I execute "update" statement with sub-query, it failed.
All the rows in the 2 tables are not duplicated, and the same statement will succeed in carbondata version 1.1.1.
The test log as following:
scala> cc.sql("select count(*), count(distinct id) from qqdata2.c_indextest1").show(100,false);
+--------+------------------+
|count(1)|count(DISTINCT id)|
+--------+------------------+
|300000 |300000 |
+--------+------------------+
scala> cc.sql("select count(*), count(distinct id) from qqdata2.c_indextest2").show(100,false);
+--------+------------------+
|count(1)|count(DISTINCT id)|
+--------+------------------+
|71223220|71223220 |
+--------+------------------+
scala> cc.sql("update qqdata2.c_indextest2 a set(a.CUST_ORDER_ID,a.ORDER_ITEM_IDATTR_ID,a.ATTR_VALUE_IDATTR_VALUE,a.CREATE_DATE,a.UPDATE_DATE,a.STATUS_CD,a.STATUS_DATE,a.AREA_ID,a.REGION_CD,a.UPDATE_STAFF,a.CREATE_STAFF,a.SHARDING_ID,a.ORDER_ATTR_ID) = (select b.CUST_ORDER_ID,b.ORDER_ITEM_IDATTR_ID,b.ATTR_VALUE_IDATTR_VALUE,b.CREATE_DATE,b.UPDATE_DATE,b.STATUS_CD,b.STATUS_DATE,b.AREA_ID,b.REGION_CD,b.UPDATE_STAFF,b.CREATE_STAFF,b.SHARDING_ID,b.ORDER_ATTR_ID from qqdata2.c_indextest1 b where a.id = b.id)").show(100,false);
17/10/18 11:32:46 WARN Utils: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.debug.maxToStringFields' in SparkEnv.conf.
17/10/18 11:33:20 AUDIT deleteExecution$: [hdp84.ffcs.cn
][bigdata][Thread-1]Delete data operation is failed for qqdata2.c_indextest2
17/10/18 11:33:20 ERROR deleteExecution$: main Delete data operation is failed due to failure in creating delete delta file for segment : null block : null
17/10/18 11:33:20 ERROR ProjectForUpdateCommand$: main Exception in update operationjava.lang.Exception: Multiple input rows matched for same row.
java.lang.RuntimeException: Update operation failed. Multiple input rows matched for same row.
at scala.sys.package$.error(package.scala:27)
at org.apache.spark.sql.execution.command.ProjectForUpdateCommand.processData(IUDCommands.scala:239)
at org.apache.spark.sql.execution.command.ProjectForUpdateCommand.run(IUDCommands.scala:141)
at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:58)
at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult(commands.scala:56)
at org.apache.spark.sql.execution.command.ExecutedCommandExec.executeTake(commands.scala:71)
at org.apache.spark.sql.execution.CollectLimitExec.executeCollect(limit.scala:38)
at org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1.apply(Dataset.scala:2378)
at org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:57)
at org.apache.spark.sql.Dataset.withNewExecutionId(Dataset.scala:2780)
at org.apache.spark.sql.Dataset.org
$apache$spark$sql$Dataset$$execute$1(Dataset.scala:2377)
at org.apache.spark.sql.Dataset.org
$apache$spark$sql$Dataset$$collect(Dataset.scala:2384)
at org.apache.spark.sql.Dataset$$anonfun$head$1.apply(Dataset.scala:2120)
at org.apache.spark.sql.Dataset$$anonfun$head$1.apply(Dataset.scala:2119)
at org.apache.spark.sql.Dataset.withTypedCallback(Dataset.scala:2810)
at org.apache.spark.sql.Dataset.head(Dataset.scala:2119)
at org.apache.spark.sql.Dataset.take(Dataset.scala:2334)
at org.apache.spark.sql.Dataset.showString(Dataset.scala:248)
at org.apache.spark.sql.Dataset.show(Dataset.scala:640)
... 50 elided
yixu2001