テーブルへの挿入中に重複エントリの問題に直面しています。
ファイルからレコードを読み取るために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 PM org.apache.hadoop.mapred.LocalJobRunner$Job run 警告: job_local_0001 java.io.IOException: org.apache.hadoop.mapred のキー「PRIMARY」のエントリ「505975648」が重複しています。 org.apache.hadoop.mapred.ReduceTask$OldTrackingRecordWriter.close(ReduceTask.java:467) の lib.db.DBOutputFormat$DBRecordWriter.close(DBOutputFormat.java:77) 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) で