2013-03-08 26 views
2

嘿所有你能幫我解決以下錯誤嗎?當我運行Mapreduce作業fopr將數據從hdfs文件插入到hbase表中時,我得到了這個結果。使用HFileOutputFormat.class,我早些時候使用MultiTableOutputFormat.class運行相同的工作,但它在將數據插入到hbase表中時花費了很多時間。線程「main」中的異常org.apache.hadoop.mapred.InvalidJobConfException:未設置輸出目錄

這樣可以ü請幫我... :) *

job.setMapOutputKeyClass(ImmutableBytesWritable.class); job.setMapOutputValueClass(Put.class); job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(HFileOutputFormat.class); job.setMapperClass(Map.class); HTable hTable =新的HTable(conf,「ARK_3000」); HFileOutputFormat.configureIncrementalLoad(job,hTable);

ERROR security.UserGroupInformation:PriviledgedActionException 爲:reddym(AUTH:SIMPLE) 原因:org.apache.hadoop.mapred.InvalidJobConfException:輸出 目錄未設置。線程「主」中的異常 org.apache.hadoop.mapred.InvalidJobConfException:輸出目錄不是 集。

感謝Madhusudhana雷迪

回答

3

確保輸出目錄沒有寫保護,然後再試一次不要使用目錄,如驅動器的根目錄。希望這有助於 問候

編輯:嘗試添加這在它要求你的輸出目錄

HFileOutputFormat.setOutputPath(conf, new Path(<YOUR_LOCATION>)); 

FileOutputFormat.setOutputPath(conf, new Path(<YOUR_LOCATION>));

而且你需要提及的輸出目錄,所以它知道在哪裏寫的數據到。

希望這可以幫助你進一步解決你的問題,讓我知道你是否需要任何幫助。因爲我總是樂於提供幫助。

編輯2:您需要提及輸出目錄,因爲您正在寫入的表存儲在內存中,當您結束程序時,內存中的所有數據都將丟失。 例如,如果程序崩潰,則所有數據都會丟失,除非將其寫入磁盤。所以保存到輸出目錄的數據是一個備份,以防出現任何問題。

我希望這清楚地回答你的問題要問你,如果你需要更多的援助發表意見時 問候 湯姆

+0

感謝快速反應:)很新的HBase的。所以你可以詳細解釋一下在代碼中添加什麼來消除這個錯誤。其實我沒有添加下面的代碼行,如果我需要添加這一行什麼是在cubeOutputPath中寫入,因爲我們直接在hbase表中寫入,爲什麼需要提到輸出目錄。 HFileOutputFormat.setOutputPath(job,cubeOutputPath); – MapReddy 2013-03-08 10:20:10

+1

是的,先生剛剛在一些文章中看到,像你在說的添加路徑,MR代碼現在運行無誤,但它仍然沒有完成任何地圖。而我的問題是爲什麼需要提及輸出目錄,因爲我們想要寫入數據到HBase表中。 – MapReddy 2013-03-08 10:50:18

+0

真棒:)得到的答案...再次Thanx。 :)我上面的代碼運行了500個文件,其中有5000行,每行中有32列在每個文件中。每個文件的大小爲5.5 MB。 MultiTableOutputFormat.class代碼早些時候完成了將近24小時完成:(:(。它尚未完成任何Maptasks截至目前需要多少時間才能完成總計約3 GB的數據插入到hbase表? – MapReddy 2013-03-08 11:03:30

相關問題