original作者 : seeksky         http://blog.seeksky.tk       转载请注明

最近在做一个项目,有关企业中的CRM的项目

客户的原始资料是存储在excel中的,需要导入到新的基于服务的数据库中

其中有一个很麻烦的位置,就是有一部分文件是存储在嵌入在excel的word之中的(后来才知道所有的office的文件都可以被解析成ole对象,包括excel文档本身和word文档本身),这样使用python读取excel的库xlrt就不行了

在这之间查了很多资料,最后确定使用win32com这个库可以实现这个功能,因为win32com直接调用的office的程序的接口进行操作,和VBA调用的基本一样(后来分析了win32com的代码才发现其实就是用的一样的接口,使用的office的类似java中反射一类的接口,直接通过函数名称调用的一种方式)

在网上查找了一些资料之后,终于把这件事情搞定了,下面就来详细讲一下如何使用python win32com库读取excel中的word文档

——————————–正文———————————

  • 安装win32com

    这步很简单,但是之前要装python运行环境,我的装的是2.7的所以对应的也是win32com针对2.7运行环境的版本,当然还有64位操作系统与32位操作系统的区别,不过这里的64位和32位指的是你装的python运行环境是32位还是64位的(因为64位操作系统也可以跑32位的python)。

下载地址:http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/pywin32-218.win-amd64-py2.7.exe/download

  • 读取excel中嵌入的word文档

    先贴代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from win32com.client import Dispatch
import win32com.client
import codecs
import sys
import os
import types

class easyExcel:
    def __init__(self, filename=None):
        self.xlApp = win32com.client.Dispatch('Excel.Application')
        self.xlApp.Visible = False
        if filename:
             self.filename = filename
             self.xlBook = self.xlApp.Workbooks.Open(filename)
        else:
             print "not found this file"
        print self.xlBook.Worksheets(1).name
        for ole_1 in self.xlBook.Worksheets(1).OLEObjects():
            ole_1.Activate()
            ole_obj = ole_1.Object
            word_obj = ole_obj.Application
            doc = word_obj.Documents(1)
            doc.Activate()
            str1 = doc.Tables(1).Cell(2,1).Range.Text
            str2=str1.encode('gbk')
            str2=str2.decode("gbk")

这里主要分为几个步骤

1.建立excel应用对象
1
2
self.xlApp = win32com.client.Dispatch('Excel.Application')
self.xlApp.Visible = False
2.读取excel文档
1
2
3
4
5
if filename:
             self.filename = filename
             self.xlBook = self.xlApp.Workbooks.Open(filename)
else:
             print "not found this file"
3.取出嵌入到excel中的word文档的ole对象
1
2
3
4
5
6
for ole_1 in self.xlBook.Worksheets(1).OLEObjects():
            ole_1.Activate()
            ole_obj = ole_1.Object
            word_obj = ole_obj.Application
            doc = word_obj.Documents(1)
            doc.Activate()
4.读取word文档中的内容(这里的例子是读取了文档中一个表格的内容,具体方法参考word中Document对象VBA宏的用法)
1
2
3
str1 = doc.Tables(1).Cell(2,1).Range.Text
str1=str1.encode('gbk')
str1=str1.decode("gbk")

 

  • 遇到的问题总结

    在整个过程中遇到的问题很多,因为从来没有人做过相关的工作,在网上也找不到任何相关的资料,在这里把问题总结一下

首先一个是win32com库的相关问题:

1.由于本身这个库使用的是office自带的库的反射机制实现的,所以通过dir()或者是help()这样python自带的帮助函数是看不到你想要用的库函数的声明和帮助的,唯一的办法就是查微软的MSDN

2.由于这个库直接使用office自带的API,所以虽然大部分的版本都能通用,但是部分函数在office不同版本中有所差别,所以兼容性需要在对应的版本上面进行测试

另外一方面是有关字符集的问题:

在读取word文档的时候遇到了一个很奇怪的问题,因为数据库使用的utf-8的字符集,所以需要将本身word中存储的gbk字符集的字符串进行转换,但是转换总是出错,提示类似ascii编码超出128的错误提示,貌似是因为ascii和gbk混合的原因,最后加了一句encode(‘gbk’)再decode(‘gbk’)问题解决,但是具体什么原理,并不清楚。

转自:http://www.playpcesor.com/2013/11/blog-post_29.html

这篇文章是少见的从技术以及工具的角度来阐述如何管理时间的文章

写得很不错,感谢作者的耕耘

———————————–正文开始———————————–

你應該有遇過這樣的經驗:明明花了很多時間「收納」物品,但愈整理這些東西愈難被使用。或者花了很多時間「管理」時間,但愈多的安排,結果時間都浪費在排程上,反而沒有時間去真正的執行?你的時間管理方法,是不是也陷入了這樣的錯誤當中。
怎麼回事?管理、收納不是好事嗎?確實如此,但如果以為目標就是「管理」和「收納」,這就搞錯方向了。無論工作或生活上的任務,我們的真正目標永遠是「使用」、「執行」、「體驗」和「完成」,整理與排程只是一個過程,如果把「手段」誤認為「目標」,就會導致時間管理反而變成最浪費時間的一件事情。
時間管理當然是必須的,但安排行程、規劃任務,不應該是「放在工作時間上」來做,最好能夠利用「零碎時間」完成(參考:這 10 件事情,不如留到「零碎時間」再做更有效率!) ,無論如何我們一定要把正式的工作時間留給真正去執行工作。

那麼,除了前面那篇文章提到的時間區段分別外,今天讓我們繼續深入這個題目,來看看還有哪些具體的時間管理技巧,可以幫助我們「避免在時間管理時,反而造成時間浪費」。

  • 更多「具體可行」的時間管理技巧,還可以延伸參考:* 10 個真的可以被具體執行的時間管理技巧 其實,今天的分享,完全來自於我的個人經驗。早期我被許多新奇的時間管理工具、方法吸引,覺得時間管理非常好玩,也錯誤的「把時間管理當作逃避真正執行工作」的藉口,走了很多冤枉路。
    所以今天這篇文章是目前統整後的心得,關於哪些時間管理技巧,可以幫助你「在時間管理上最節省時間」,提供大家討論。

  • 一、不要把「容易變動的」任務寫到行事曆上 我常常會推薦大家要同時使用「行事曆」與「待辦清單」兩種工具,因為「行程」和「任務」是不同的兩種事情。
    早期我也是只用「行事曆」,把所有瑣事都寫到行事曆上,包含那些不一定非那個時間做不可的事情,例如下圖這樣,我知道自己要去做「A、B、C」三個任務,於是我在一週前先把這些任務時間都排好,並且很「精準」的排在某一個時間點要自己去做某個任務。
    一旦有任務,我就這樣排上行事曆,因為還要設想時間,所以可想而知,會花上許多時間「安排任務」。

但是結果呢?這樣的「預排」是非常容易無效的,因為很有可能禮拜二早上10點,我被叫去參加了一個會議,或是我剛好前一個工作尚未完成,或是我剛好偷懶。即使你是一個非常自律的人,但你也無法掌控「外在環境、主管、客戶、工作夥伴臨時要你去做的事情」。
於是,我還要再花上一樣多的時間,去把這些已經排好時間的任務,重新調整一次。這樣來來回回變成「總是在調整時間」,不是非常浪費時間的事情嗎?
所以我現在不做這樣「浪費時間的時間管理」了。
現在我的行事曆利用變成這樣:寫上那些不容易變動、甚至不能變動的行程。也就是「會議」與「進度」。例如某一個專案要在哪一天做到什麼進度?我就寫在行事曆上,這個進度基本上確定後就不會變、不能變,我透過行事曆來督促自己要在「那個截止日」之前完成需要的任務。又或者是某一個活動、會議,就是要在那個時間點去那個地方參加,絕對不會變。

  • 二、確定截止日,「行事曆」根本不用花時間排程 你其實根本不用花任何時間在行事曆的管理上,多花的都是浪費。
    因為這些「真正需要寫上行事曆」的行程都有一個特色,就是「這些時間都不是我一個人可以決定的」,那是外在施加於我的時間,我被告知要這麼去做的時間,所以根本不需要我去管理、思考,我只是要「記得那個時間去做那個事情,而且一定要做」。
    也就是我只是要把被通知的時間寫上行事曆而已!讓我們優先區隔出這一塊。然後我們可以想想看關於「截止日」的問題。
    例如我的專案被設定「這個週五要交出第一章」,這個時間是已經確定的進度,而且不是我能改變的,那麼這時候我怎麼辦?我當然就是依據這一週五個工作天把第一章分成五等分,然後每一天起碼要完成一等份的內容。
    這就是為什麼「行事曆不需要花時間排程」的另外一個很重要的原因,當「截止日」、「每週進度」出來後,我們就非常明確的知道「我要在多少時間內完成多少事情」,然後就是很自然的先將份量劃分,實際執行當下多退少補,讓最後截止日所有份量都完成即可。
    這裡面最重要的是:「我們不要花時間去排程」,因為沒有什麼好排程的,截止日先確定,其他的就是逆向回推進度而已。

  • 三、只要花一點時間,預排今天可以執行的時間 延續前面的例子,假設依據這週五的截止日,我把第一章內容分成五等分來完成,那麼就有五個任務了,這五個任務要放在哪裡管理呢?就是放在「待辦清單」裡,待辦清單放我們真正的「執行步驟」,讓我們可以清楚的知道完成了哪些?接下來要做哪些?
    **
    **而待辦清單的好處就是「不用花時間去管理時間」,只要把任務都寫上去即可。都寫上去了,自然就記得,就知道「有時間」的時候要去做哪些事情。
    對我來說, 這個待辦清單就是「 Evernote 」,我收集在 Evernote 的筆記就是我的待辦事項。當然,你也可以使用你擅長的待辦清單工具。總之,打開待辦清單,我就知道自己還有哪些事情可以做,還有哪些事情需要做,這樣即可。

但是也不是完全不安排時間,為了避免把時間浪費在管理上,我只會「預排接下來一天一定要完成的事情」。通常我會利用前一天晚上睡覺前,或是早上通勤中,做一日工作的預排。(參考:今天晚上就該做,明天早上不要做的 5 個數位工作習慣
因為只預排今日要做的事情,時間非常接近,因此掌控度最高,也不會排了卻還是不斷變動。但是,為了避免排了卻沒有做,結果要一直調整執行時間(這一樣是浪費時間),所以我「不會把今天的時間排滿」。
嚴格來說,只需要預排「真的非今天做完不可的少數重要任務」即可,而且一定要為每一天留下足夠的空檔時間,可以利用這些空檔完成次要任務,或是意外時彈性運用。
例如前面看到我的待辦清單很多任務,但真的排上時間的,只有兩件「今日一定要完成」的任務筆記而已。排得少,相對一定可以完成,而且優先完成最重要的任務,並且不會有變動,這樣就能節省最多時間管理的時間。

  • 四、用重要、緊急來分類待辦任務 前面分享盡量「不安排時間」,這樣就減少了容易變動的時間安排所造成的時間浪費,可是,大家也看到我的清單裡一堆任務,這樣不是會讓任務一團亂嗎?所以要用兩種「具有持久性、穩定性」,有效但不會變動的整理方法來管理清單。
    因為下面這樣的整理方法具有「整理一次就好,從此幾乎不會變」,而且整理時很簡單,就能大量節省不必要的時間管理了。
    第一種,就是利用把任務分類成「重要」與「緊急」,也就是「有權重等級」的分類方法,目的是讓自己知道在這一堆任務中「哪些是需要優先考慮的?」
    在 Evernote 中,我利用標籤( Tag )的方式來區分每個任務的權重,幫任務筆記加上「重要」或「緊急」的標籤,然後每天執行完前面第三項所說的「今日一定要完成的任務」後,我就來到這個權重分類的待辦清單中:

  • 1.優先執行同時有「重要」與「緊急」標籤的任務。* 2.接著如果有空檔,優先執行「重要」任務。* 3.最後如果今日還有空檔,就執行「緊急」任務。 加上標籤後,基本上不會改變任務屬性了,接下來我就是每天依據剩下的空檔,依據重要性,一一把任務完成即可:「再也不用花時間去調整時間」。(參考:用重要與緊急兩標籤搞定 Evernote 四個層次的瑣事任務

  • 五、依據「專案」來分類待辦任務 另外一個「比預排時間」更有效,而且節省時間的分類方法,就是依據專案來分類你的待辦任務,你的任務不可能一下是這個專案、一下是那個專案,所以也一樣不用浪費時間在管理,可以把時間專注到執行上。
    而且依據專案來分類待辦任務,可以很清楚的知道「這個月要完成的專案」,還有哪些「尚未完成的任務、步驟」,就可以優先完成他們。尤其對於手邊同時要進行多個專案的人來說,這樣的分類更實用。
    對我來說,這部份也可以透過 Evernote 完成, Evernote 可以建立一些「未排程」的提醒事項,並且當切換左邊的專案分類記事本時,只會顯示這個專案底下的提醒事項,這樣就等於依據專案來分類待辦清單。
    於是,我可以依據專案的迫切度,去優先選擇應該執行哪些任務。 (參考:Evernote 新增時間提醒功能!從筆記本升級時間管理系統

  • 小結: 你不一定要跟我使用一樣的工具,但方法都是相同的。
    經由上述的「時間管理」方法,我節省最多的排程時間,而事實上「安排時間是很浪費時間的一件事情」。一個節省時間的時間管理方法應該是:

  • 1.花最少時間排程,確保每個排程一定會做到。* 2.與其花時間排上一堆任務,不如專注重點任務。* 3.讓自己不用一直重新安排時間。* 4.只要做到:「知道自己接下來可以做什麼」即可。 以上是我的真實體驗分享,透過這樣一些方法的調整,我就可以花最少的時間在時間管理上,提供大家參考。

转自:http://www.playpcesor.com/2010/04/rescuetime.html

rescuetime是在之前一个文章推荐下使用的,一直只是一个用于original自己时间的工具而已,但是看了这个博客之后,我发现其实还有很多东西可以做,通过这个软件甚至可以很方便的管理自己的时间,拒绝拖延症。

感谢博主的辛勤耕耘,这篇文章写得很不错

—————————————-正文开始——————————————

rescuetime-14 (by 異塵行者)rescuetime-15 (by 異塵行者)

大概兩年前,我曾經寫了兩篇文章介紹「RescueTime」這個時間管理服務。簡單來說,安裝RescueTime的時間記錄軟體後,就會把你所有使用軟體、文件和瀏覽各種網頁的時間,上傳到RescueTime的個人專屬網站中,一方面幫你記錄整個電腦使用的過程,另外一方面透過可自訂的統計分析功能,讓你隨時觀察自己是否花了太多時間在無謂的事情上。

而目前的RescueTime除了持續穩定更新,以提供更有效的分析功能外,也在今年的四月上旬,分別推出「Firefox」和「Google Chrome」瀏覽器專用的時間管理套件。

被稱為「RescueTime Firefox(Chrome) Productivity Meter」的瀏覽器專用生產力計量器,和RescueTime原本的獨立紀錄軟體相比,雖然前者只能針對單台電腦中單個瀏覽器裡的網頁瀏覽進行記錄,但是使用時不需要註冊登入,不需常駐一個記錄軟體,其統計分析功能亦和正式版相當。對於依賴網路工作的朋友來說,「RescueTime Firefox(Chrome) Productivity Meter」就是一款針對我們設計的時間管理工具

時間管理 (by 異塵行者)

如果細分來看的話,一個時間管理的流程,首先從「記錄時間」開始,能夠先了解自己目前的時間應用方式,並且從中找出浪費的問題癥結,然後才能對症下藥的去「安排時間」。

而記錄時間的方式,一種是自動化的紀錄整個時間使用過程,方便我針對完整生活習慣去做調整;另外一種則是針對自己同時進行的幾個工作目標進行時間記錄,了解如何善用時間去完成既定任務進度。後者分別有像是「1DayLater」、「Klok」這樣的免費工具幫你進行專案時間管理;而前者要進行生活時間自動記錄,就是今天要介紹的「RescueTime」的拿手好戲。

  • 01.不需要註冊登入,每個瀏覽器獨立專屬資料庫

下面我們開始介紹RescueTime瀏覽器套件的使用流程。不管你選擇安裝Firefox版本或Google Chrome版本,功能上可以說是完全一樣的,只要安裝完成後,就開始進行自動化的時間記錄,會將你上網瀏覽的網頁與各自花費停留的時間上傳到專屬資料庫

因為你完全不需要註冊登入,所以可見RescueTime是針對你安裝的那個瀏覽器去建立一個專屬帳號頁面,以後只要用同一個瀏覽器,就可以進入其專屬資料庫

而在隱私安全性的部份,首先資料傳輸、頁面連結都使用加密的方式,RescueTime也保證不會記錄你的帳密、表單資料,只會上傳你到過哪些網頁?花費多少時間?而已,這些資料是匿名的、不會公開的,但是會作為RescueTime全體用戶資料分析比較的基礎(例如分析大家在哪些網站花最多時間?大家上網的生產力狀況?)。

rescuetime-02 (by 異塵行者)

  • 02.上網生產力分析儀表板

平常你完全不需要去理會RescueTime套件,安裝後也不會馬上就出現有用的資料,大概每隔一天,或是每隔一週再去查看RescueTime資料庫,才會獲得比較具體的統計分析。

RescueTime套件會持續記錄每個不同網頁所花費的上網時間,它的一個基本規則是使用滑鼠、鍵盤操作網頁的過程會累計時間,而當閒置超過兩分鐘後,就會暫停記錄這個網頁的使用時間,直到恢復真正的互動操作。所以基本上可以說RescueTime套件能夠體現出你真正去使用每個網頁的時間長度。

當你想要查看自己的時間使用情形時,只要點擊瀏覽器上的RescueTime按鈕,就會在彈出資料列中告訴你花了多少時間上網?其中有多少具備生產力的比率?和所有RescueTime用戶相比你是否比較有生產力?

這邊大家一定會疑惑,RescueTime怎麼知道我到底是不是很有生產力的使用網路?說到這一點就要讚賞一下RescueTime設計得很不錯的自訂分析功能,用很簡單的方式幫你計算出生產力分數,讓我們在這裡點擊「View Datailed Stats」進入後台查看。

rescuetime-03 (by 異塵行者)

rescuetime-04 (by 異塵行者)

  • 03.統計後台幾個重點分析數據的意義:

進入RescueTime的統計後台,你可以看到幾個不同項目的分析,下面我就簡單說明其意義:

  • 「Efficiency Summary」:效率摘要。你可以設定不同類別網站的生產力分數,從「-2~+2」,而這邊就是顯示你的平均分數,讓你知道自己是否有將上網時間花費在真正有用的事情上面(Avg User還可以看到所有用戶的平均分數是:-0.02,是表示大家都稍微沒有效率的意思嗎?)。* 「Activities」:個別網頁活動時間。列出你最常使用的幾個網站,並顯示你花費在他們上面的時間。* 「% of Time in Top 10」:前10大常用網站所佔時間比。意思是你的前10名網站,在你所有上網時間裡所佔的比率;這個數據依據用戶自己的工作情況會有不同的意義,例如你可以說我把所有時間都花在使用某10個網站上,表示我工作很專心,但也可以說是視野太過侷限,這就要看每個人上網是為了什麼需求來決定。* 「Catagories」:網站類型活動時間。以網站的分類作為比較的基準,讓你可以看到自己最常使用新聞類網站?還是最常使用影音類網站?* 「Productivity」:生產力分佈圖。這和第一項的效率摘要使用一樣的分數指標,只是這邊會分別顯示每個分數範圍中你所花費的時間,例如你花了兩個小時在+2具有生產力的網頁上,但也花了一個小時在-2不具生產力的網站上。

rescuetime-06 (by 異塵行者)

rescuetime-07 (by 異塵行者)

  • 04.依據自己的需求自訂網站生產力分數:

有的人使用Google Reader是看看休閒八卦,有的人使用Google Reader是用來收集研究資料,對於前者來說在Google Reader上花太多時間是浪費,但對於後者來說在Google Reader上花的時間都是工作的一部分。因為每個人對於瀏覽什麼網站是有生產力的定義一定不同,所以RescueTime允許用戶簡單的自訂不同網站的生產力分數。

在RescueTime網站後台的右方功能列,你可以看到各種統計資料的瀏覽分類,而切換到「Activities」頁面中,我們就可以自訂每個不同網頁應該屬於哪一種網站分類,以及這個網頁對我來說的「Productivity(生產力分數)」。

rescuetime-09 (by 異塵行者)

RescueTime一個方便之處,就是幾乎常見網站都已經依據大多數用戶的使用情況,幫我們預設好網站分類與生產力分數。

但是像Google Reader被RescueTime認為是損害生產力,給予了「-2」分;而對我來說,瀏覽Google Redaer就是創造生產力的一部分,所以我就可以在這裡將其修改為「+2」。

rescuetime-10 (by 異塵行者)

不過這邊自訂時要注意的是,RescueTime網站反應時間比較慢,當你修改生產力分數後,要確實看到後面綠色的「saving」字樣變成「saved」後,才表示有正確儲存修改資料。

rescuetime-11 (by 異塵行者)

  • 05.對比各種上網花費時間與生產力關係

有了前面基本操作、自訂功能的認識後,我們其實就不需要操心太多,只要讓RescueTime自己持續記錄,然後隔一段時間再上去檢查自己的網路瀏覽狀況即可。

RescueTime可以依據不同時間區段、資料類型來觀察你的使用情況,這部份的操作就讓各位讀者自己慢慢去體驗。

rescuetime-12 (by 異塵行者)

rescuetime-13 (by 異塵行者)

  • 小結:

「RescueTime Firefox(Chrome) Productivity Meter」的優點是不需要註冊登入,就能記錄你的網路瀏覽狀況,並且提供完整詳細的時間分析功能,而其獨特設計的「生產力計算」,也可以很直觀的顯示出「上網有沒有做正事」。

如果你常常覺得自己上網時間與工作效果似乎不成正比,那麼或許可以一起來試用看看「RescueTime」的時間記錄分析功能。

这几天刚刚将GAE上面micolog转到BAE上的wordpress上面,遇到了许多问题,现在还有很多问题没有解决

今天在网上面找了一下有关wordpress在网站统计方面的插件

发现了WP SlimStat这样一个很好用的插件,功能比较齐全

下载地址:http://wordpress.org/plugins/wp-slimstat/

然后按照正常插件安装的方式放在plugin目录下面,上传

但是BAE的webapp更新错误,错误日志如下:

Parse error: syntax error, unexpected T_STRING, expecting ‘)’ in code/builder/work/appidmm29i4u634/0/wp-content/plugins/wp-slimstat/admin/lang/dynamic_strings.php on line 311 Errors parsing code/builder/work/appidmm29i4u634/0/wp-content/plugins/wp-slimstat/admin/lang/dynamic_strings.php

大致的意思就是     /wp-content/plugins/wp-slimstat/admin/lang/dynamic_strings.php     这个文件中的这一句代码解析出现错误,然后查看这一段代码:

1
2
3
4
5
6
__('l-zu-ZA','wp-slimstat') // Zulu (South Africa)
__('l-','wp-slimstat'), // Unknown
__('l-empty','wp-slimstat'), // Unknown
__('l-xx','wp-slimstat') // Unknown
__('c-xy','wp-slimstat'), // Local IP Address
);

将311,312,313,314四行全部注释掉,也就是贴出来这段代码的第2,3,4,5行,修改为如下:

1
2
3
4
5
6
__('l-zu-ZA','wp-slimstat') // Zulu (South Africa)
#__('l-','wp-slimstat'), // Unknown
#__('l-empty','wp-slimstat'), // Unknown
#__('l-xx','wp-slimstat') // Unknown
#__('c-xy','wp-slimstat'), // Local IP Address
);

然后将修改之后的文件上传,问题解决。

由于特殊要求,导致我最近在弄在windows上面部署hadoop的问题

本身这就是个逆天的事情,又碰到时运不济,各种问题层出不穷

不过这些问题基本上都和cygwin跑的windows文件系统与linux文件系统差异性的位置造成的

————-正文开始————– 问题一

java.io.IOException: File /tmp/hadoop-…/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1   f1 l; B0 Q9 f5 T

这个问题其实一般来讲是datanode启动失败造成的

这里面datanode启动失败的情况多种多样

尝试以下方法:

1.$hadoop namenode -format 

2.清空之前版本运行的残留文件夹tmp中的文件

3.执行$hadoop datanode    命令手动驱动datanode查看出错原因

最终能搞定

问题二:

Permission denied”错误

这个问题一般是权限问题

解决方法:设置hdfs-site.xml配置文件中的权限检查为false

<property>

 <name>dfs.permissions</name>

 <value>false</value>

 <description>

   If “true”, enable permission checking in HDFS.

   If “false”, permission checking is turned off,

   but all other behavior is unchanged.

   Switching from one parameter value to the other does not change themode,

   owner or group of files or directories.

 </description>

</property>

问题3:

“Failed to set permissions of path”错误

这个错误可能出现在若干地方,例如taskTracker不启动、运行wordcount程序直接报此错误等。通常看到的错误都是不能将某个文件或目录设置为权限0700或0755等。

这个问题有很多人遇到过,是某些hadoop版本中存在的bug,在windows系统中不能兼容文件权限操作。

终极方法修改hadoop源代码,将权限操作验证的代码屏蔽掉:

修改hadoop的FileUtil类下如下代码:

private static void checkReturnValue(boolean rv, File p,

                                      FsPermission permission

                                       ) throws IOException {

//    if (!rv) {

//      throw new IOException(“Failed to setpermissions of path: “ + p +

//                            “ to “ +

//                           String.format(“%04o”, permission.toShort()));

//    }

  }

这里还涉及到在windows上面编译hadoop的过程

详情参阅http://blog.csdn.net/liu_jason/article/details/7707472

编译的时候遇到的问题层出不穷

基本上解决不了,最后在ubuntu上面一次搞定

问题4:

类似这样的错误信息

java.io.FileNotFoundException: D:\Installer\Cygwin\home\lee\hadoop-1.0.4\logs\userlogs\job_201304162015_0001\attempt_201304162015_0001_m_000003_2\stderr (系统找不到指定的路径。) 

发现在org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(Path)方法中,建立文件的路径方法检查attempt_201303232144_0002_m_000001_0是否为文件夹时会失败! 

对于linux来说,这些就是引用到另一个文件夹,它本身应该也是文件夹!但是window的jdk不认识这些东西! 

暂时没看见解决方法

然后找到一个台湾小伙改的hadoop1.0.3可以在windows上面跑

名字叫windoop,网站:https://code.google.com/p/windoop/

在这里向他表示致敬!!

到此在windows上面部署hadoop告一段落

真心是逆天的事!!!!