的Hadoop - 2.7.3MapReduce工作吐痰產生java.io.IOException:com.mysql.jdbc.Driver
我創建MapReduce工作,從HDFS輸入文件中讀取數據,併到MySQL寫入數據。
它啓動連接時發生錯誤。沒有像連接被拒絕或classNotFound異常的額外信息。簡單的IO異常,它對我沒有任何意義。
Error: java.io.IOException: com.mysql.jdbc.Driver
at org.apache.hadoop.mapreduce.lib.db.DBOutputFormat.getRecordWriter(DBOutputFormat.java:185)
at org.apache.hadoop.mapred.ReduceTask$NewTrackingRecordWriter.<init>(ReduceTask.java:540)
at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:614)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:389)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
我的MapReduce代碼:
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
DBConfiguration.configureDB(conf, "com.mysql.jdbc.Driver",
"jdbc:mysql://localhost:3306/db",
"user",
"password");
Job job = Job.getInstance(conf, "test");
job.setJar(DBMapReduce.class);
job.setMapperClass(DbMapper.class);
job.setReducerClass(DbSQLReducer.class);
job.setMapOutputKeyClass(DBKeyWritable.class);
job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(DBOutputWritable.class);
job.setOutputValueClass(NullWritable.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(DBOutputFormat.class);
FileInputFormat.addInputPath(job, new Path(args[1]));
DBOutputFormat.setOutput(
job,
"table_name", // output table name
new String[] { "dummy",
"code",
"code_type"
} //table columns
);
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
我已經加入到classpath中,HADOOP_CLASSPATH,-libjars,引用的庫和lib文件夾mysql的連接器。這些似乎都不起作用。
任何幫助將不勝感激。
幾個月前我們遇到類似的問題。我們必須連接java遠程調試器才能看到異常中的細節,以便我們確定問題。我們仍然沒有找到一種方法從系統中獲得這些必要的細節。 – Jason
我通過將mysql-connect jar添加到hadoop庫,例如mapreduce文件夾,hdfs文件夾,常用文件夾,yarn文件夾,tools文件夾下的lib來解決問題。我相信hadoop正在這些文件夾之一尋找外部罐子。 –