插入表时面临重复条目问题。
我一直在使用 Hadoop 映射器从文件中读取记录。它成功地从文件中完全读取记录。但是在通过 Hadoop 减速器将记录写入 mysql 数据库时,出现以下错误。
java.io.IOException:键“PRIMARY”的重复条目“505975648”
但是 Mysql 表仍然是空的。无法从 Hadoop DBWritable reducer 将记录写入 mysql 表。
以下是错误日志:
警告:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:Connection.close() 已经被调用。此状态下的无效操作。在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor .newInstance(Constructor.java:526) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:406) 在 com.mysql.jdbc.Util.getInstance(Util.java:381) 在 com.mysql.jdbc。 SQLError.createSQLException(SQLError.java:984) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926) 在 com.mysql.jdbc .
2014 年 6 月 4 日下午 1:23:36 org.apache.hadoop.mapred.LocalJobRunner$Job 运行警告:job_local_0001 java.io.IOException: org.apache.hadoop.mapred 中键“PRIMARY”的重复条目“505975648”。 lib.db.DBOutputFormat$DBRecordWriter.close(DBOutputFormat.java:77) at org.apache.hadoop.mapred.ReduceTask$OldTrackingRecordWriter.close(ReduceTask.java:467) at org.apache.hadoop.mapred.ReduceTask.runOldReducer( ReduceTask.java:531) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:421) 在 org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:262)