我想運行一個hadoop單元測試,使用本地文件系統模式...我最好喜歡看到幾個部分m- *文件寫出到磁盤(而不是1)。但是,因爲它只是一個測試,我不想處理64M的數據(默認大小是每塊大約64megs,我相信)。本地hadoop作業的dfs.block.size?
在分佈式模式中,我們可以把這個使用
dfs.block.size
我想知道閹有沒有辦法,我可以讓我的本地文件系統寫的小部分M檔出,即讓自己的單元測試將用幾個(儘管很小)的文件模仿大規模數據的內容。
我想運行一個hadoop單元測試,使用本地文件系統模式...我最好喜歡看到幾個部分m- *文件寫出到磁盤(而不是1)。但是,因爲它只是一個測試,我不想處理64M的數據(默認大小是每塊大約64megs,我相信)。本地hadoop作業的dfs.block.size?
在分佈式模式中,我們可以把這個使用
dfs.block.size
我想知道閹有沒有辦法,我可以讓我的本地文件系統寫的小部分M檔出,即讓自己的單元測試將用幾個(儘管很小)的文件模仿大規模數據的內容。
假設您的輸入格式可以處理可拆分文件(請參閱org.apache.hadoop.mapreduce.lib.input.FileInputFormat.isSplitable(JobContext, Path)
方法),您可以修改輸入拆分大小以使用多個映射器處理較小的文件(我假定您正在使用新的API mapreduce包):
例如,如果您使用的擴展FileInputFormat
的TextInputFormat
(或大多數輸入格式),你可以調用靜態UTIL方法:
FileInputFormat.setMaxInputSplitSize(Job, long)
FileInputFormat.setMinInputSplitSize(Job, long)
long參數是以字節爲單位分割的大小,所以正好被設置爲你想要的尺寸
引擎蓋下,這些方法設置以下作業配置屬性:
mapred.min.split.size
mapred.max.split.size
最後說明,一些輸入格式可重寫FileInputFormat.getFormatMinSplitSize()
方法(對於FileInputFormat
,默認爲1個字節),所以如果設置一個值並且hadoop看起來忽略它,那麼請耐心等待。
最後一點 - 您是否考慮MRUnit http://incubator.apache.org/mrunit/對您的MR代碼進行實際「單元」測試?
嘗試這樣做,將工作
hadoop fs -D dfs.block.size=16777216 -put 25090206.P .