用cygwin運行nutch 1.2爬取提示IOException:
$ bin/nutch crawl urls -dir crawl -depth 3 -topN 10crawl started in: crawlrootUrlDir = urlsthreads = 10depth = 3indexer=lucenetopN = 10Injector: starting at 2011-10-10 15:19:26Injector: crawlDb: crawl/crawldbInjector: urlDir: urlsInjector: Converting injected urls to crawl db entries.Exception in thread "main" java.io.IOException: Job failed! at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1252) at org.apache.nutch.crawl.Injector.inject(Injector.java:217) at org.apache.nutch.crawl.Crawl.main(Crawl.java:143)
網上提供的解決方案都是換成0.9的,經過多次搜尋,終於找到了問題的原因:語言設定問題。解決方案如下:
方法一:
重新安裝Cygwin,換一個國外的映像,(163的映像是漢化版的)
方法二:
Cygwin Shell裡邊直接set LANG=en_US是沒作用的,好像cygwin shell不支援set命令,而Cygwin也沒有locale命令。
於是到”系統屬性>進階>環境變數”中增加一個環境變數名為LANG,將值設為en_US
方法三:
讓cygwin shell使用英文介面只用在~/.bashrc這個檔案裡面加上一句話:
export LANG='en_US'
如果想使用其他介面,把en_US改成其他語言對應的地區代碼就行了,比如說zh_CN。其實LANG的“完全體”是“地區.編碼”這樣的結構。所以如果要想自己設定編碼,還需要在zh_CN的後面加上編碼——這裡用GBK來說明——使其變成zh_CN.GBK。
在這裡我們要讓介面是英文同時能讓中文也能顯示,所以將LANG設定成en_US.GBK。
到此介面語言修改完成,簡單吧?事情沒那麼簡單,在cygwin下面,只做這樣的設定,會讓vi等軟體出現匪夷所思的現象,難道是……開啟檔案不對?No,其實語言的設定還沒完。執行locale命令,會返回給你目前所有語言設定,可以說有關語言設定的項目還是挺豐富的嘛,LC下還有許多要設定的,不過LC下面有一個LC_ALL,看樣子設定他就行了,.bashrc加上一句:
export LC_ALL='en_US.GBK'
可以在修改前後用df等命令查看下有無中文
參考:http://owwlo.com/blog/?p=36#comment-38
http://blog.csdn.net/a221133/article/details/7043318