這是在做分散式系統期末專題遇到的問題
事情背景是這樣的:
用pietty連接在遠端的VM,系統是無圖形介面的命令式Ubantu
有夠難用的QQ
不過也很大程度上練習了一下下Linux
在上面架設hadoop來作業
因為是編譯java程式,又沒有圖形介面
所以在本身win7的電腦上,開eclipse打code
修正完後再把程式碼複製到VM裡編譯去跑
(當然有處理map reduce的那支不行這樣)
那第三支程式有用到reduce後出來的結果
讀檔,做一些處理
以下是一小小部分的reduce結果內容
Bigaj, 1
Bonfires 1
Booz 1
Boucher. 1
Bradley 3
Brahimi, 1
Brandy 1
Brazil 12
Brazil's 7
Brazil, 7
Brazil. 2
Brazilian 7
Brazilian!" 1
Brazilian, 2
我把檔案內容從遠端VM"複製"到我的電腦上作業
剪貼簿的複製
因為是做字串與相對應的次數去做些處理
所以需要切割
從中間切掉
一開始我是用"\t"
然後
就爆炸
發現裡面是長度不一的空白字元
=口=
所以弄了個方法
使用split(" ")後
我只抓這行中最前面和最後面的東西
成功達到我想做的處理
不過............
把code放到VM裡面
竟然又爆炸
還是大爆炸
de了3個小時找不到原因
滿心在想為什麼win7可以跑ubantu就不能跑了
後來找到
在VM裡面的reduce結果
中間看似長度不一的分隔用空白
都只是一個\t
傻眼QQ
(為什麼一樣是\t長度卻都不一樣呢
(這個我真的不了解
把code裡面的切空白又改回切tab就行了
結論:
用剪貼簿的複製
就是用記憶體儲存資料進行複製
電腦會把那些長度不一的\t
看成相對應的空白
湊成的分隔長度
在VM裡面認為是\t
在我的電腦看來是空白的集合體
處理方法就是用ftp把遠端的檔案用download的方式載到我的電腦
這樣我的電腦也會覺得那是\t不是空白
或者
一開始就直接在VM打code也不會發生這慘案
