Taiwan Hadoop Forum

台灣 Hadoop 技術討論區
現在的時間是 2021-02-26, 11:42

所有顯示的時間為 UTC + 8 小時




發表新文章 回覆主題  [ 2 篇文章 ] 
發表人 內容
 文章主題 : MapReduce寫入資料到Mysql的問題
文章發表於 : 2013-06-04, 16:59 
離線

註冊時間: 2013-05-21, 15:52
文章: 2
我照著下面這篇教學在練習MapReduce對Mysql的讀寫
http://blog.csdn.net/dajuezhao/article/details/5799371
我已經可以做到從Mysql讀出資料再輸出到HDFS的資料夾
接著我是想把剛讀出的資料再寫入另一個Mysql裡
但是程式執行時卻有錯誤
程式碼和教學裡是一樣的,只有Mysql的設定和欄位名稱不一樣而已
想請問是哪邊有問題

以下是出現的錯誤訊息

代碼:
13/06/04 16:57:28 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
13/06/04 16:57:28 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
13/06/04 16:57:28 WARN snappy.LoadSnappy: Snappy native library not loaded
13/06/04 16:57:28 INFO mapred.FileInputFormat: Total input paths to process : 1
13/06/04 16:57:28 INFO mapred.JobClient: Running job: job_local_0001
13/06/04 16:57:28 INFO mapred.Task:  Using ResourceCalculatorPlugin : null
13/06/04 16:57:28 INFO mapred.MapTask: numReduceTasks: 1
13/06/04 16:57:28 INFO mapred.MapTask: io.sort.mb = 100
13/06/04 16:57:28 INFO mapred.MapTask: data buffer = 79691776/99614720
13/06/04 16:57:28 INFO mapred.MapTask: record buffer = 262144/327680
13/06/04 16:57:28 INFO mapred.MapTask: Starting flush of map output
13/06/04 16:57:29 INFO mapred.MapTask: Finished spill 0
13/06/04 16:57:29 INFO mapred.Task: Task:attempt_local_0001_m_000000_0 is done. And is in the process of commiting
13/06/04 16:57:29 INFO mapred.JobClient:  map 0% reduce 0%
13/06/04 16:57:31 INFO mapred.LocalJobRunner: hdfs://cjimzu-PC:9000/PatientRecord/part-00000:0+10554
13/06/04 16:57:31 INFO mapred.Task: Task 'attempt_local_0001_m_000000_0' done.
13/06/04 16:57:31 INFO mapred.Task:  Using ResourceCalculatorPlugin : null
13/06/04 16:57:31 INFO mapred.LocalJobRunner:
13/06/04 16:57:31 INFO mapred.Merger: Merging 1 sorted segments
13/06/04 16:57:31 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 11806 bytes
13/06/04 16:57:31 INFO mapred.LocalJobRunner:
13/06/04 16:57:32 WARN mapred.FileOutputCommitter: Output path is null in cleanup
13/06/04 16:57:32 WARN mapred.LocalJobRunner: job_local_0001
java.lang.NumberFormatException: For input string: "6   6 1.3.6.1.4.1.9328.50.1.0001 1.3.6.1.4.1.9328.50.1.0001^^^^ null null null null"
   at java.lang.NumberFormatException.forInputString(Unknown Source)
   at java.lang.Integer.parseInt(Unknown Source)
   at java.lang.Integer.parseInt(Unknown Source)
   at org.windoop.WritePatient$WritePatientReducer.reduce(WritePatient.java:96)
   at org.windoop.WritePatient$WritePatientReducer.reduce(WritePatient.java:1)
   at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:519)
   at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:420)
   at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:260)
13/06/04 16:57:32 INFO mapred.JobClient:  map 100% reduce 0%
13/06/04 16:57:32 INFO mapred.JobClient: Job complete: job_local_0001
13/06/04 16:57:32 INFO mapred.JobClient: Counters: 18
13/06/04 16:57:32 INFO mapred.JobClient:   File Input Format Counters
13/06/04 16:57:32 INFO mapred.JobClient:     Bytes Read=10554
13/06/04 16:57:32 INFO mapred.JobClient:   FileSystemCounters
13/06/04 16:57:32 INFO mapred.JobClient:     FILE_BYTES_READ=38931
13/06/04 16:57:32 INFO mapred.JobClient:     HDFS_BYTES_READ=10554
13/06/04 16:57:32 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=94568
13/06/04 16:57:32 INFO mapred.JobClient:   Map-Reduce Framework
13/06/04 16:57:32 INFO mapred.JobClient:     Map output materialized bytes=11810
13/06/04 16:57:32 INFO mapred.JobClient:     Map input records=125
13/06/04 16:57:32 INFO mapred.JobClient:     Reduce shuffle bytes=0
13/06/04 16:57:32 INFO mapred.JobClient:     Spilled Records=125
13/06/04 16:57:32 INFO mapred.JobClient:     Map output bytes=11554
13/06/04 16:57:32 INFO mapred.JobClient:     Total committed heap usage (bytes)=160763904
13/06/04 16:57:32 INFO mapred.JobClient:     Map input bytes=10554
13/06/04 16:57:32 INFO mapred.JobClient:     SPLIT_RAW_BYTES=99
13/06/04 16:57:32 INFO mapred.JobClient:     Combine input records=0
13/06/04 16:57:32 INFO mapred.JobClient:     Reduce input records=0
13/06/04 16:57:32 INFO mapred.JobClient:     Reduce input groups=0
13/06/04 16:57:32 INFO mapred.JobClient:     Combine output records=0
13/06/04 16:57:32 INFO mapred.JobClient:     Reduce output records=0
13/06/04 16:57:32 INFO mapred.JobClient:     Map output records=125
13/06/04 16:57:32 INFO mapred.JobClient: Job Failed: NA
Exception in thread "main" java.io.IOException: Job failed!
   at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1265)
   at org.windoop.WritePatient.main(WritePatient.java:124)


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: MapReduce寫入資料到Mysql的問題
文章發表於 : 2013-06-05, 08:46 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
naygnosuw 寫:
代碼:
java.lang.NumberFormatException: For input string: "6   6 1.3.6.1.4.1.9328.50.1.0001 1.3.6.1.4.1.9328.50.1.0001^^^^ null null null null"
   at java.lang.NumberFormatException.forInputString(Unknown Source)
   at java.lang.Integer.parseInt(Unknown Source)

我想您若只是修改 MySQL 資料庫的資料,可能還是會遇到一些問題。
原程式碼用"\t"(也就是 TAB 當分隔符號),並且用 Integer.parseInt(splits[0]); 處理切 Token 之後的內容。
但您的資料看起來,"6 6 1...." 中間確實有"\t",但沒有被切開,很可能您移除了
代碼:
        String[] splits = values.next().toString().split("/t"); 

其次,因為沒有斷開,所以
代碼:
        r.id = Integer.parseInt(splits[0]); 

這一行程式碼拿到的 splits[0] 就變成非整數的內容,也就是錯誤訊息中的
代碼:
"6   6 1.3.6.1.4.1.9328.50.1.0001 1.3.6.1.4.1.9328.50.1.0001^^^^ null null null null"


解法:把 split 補回去。

- Jazz


回頂端
 個人資料 E-mail  
 
顯示文章 :  排序  
發表新文章 回覆主題  [ 2 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
正體中文語系由 竹貓星球 維護製作