MapReduce Error: java.io.EOFException at java.io.DataInputStream.readFully(DataInputStream.java:197)
最終查詢到的原因: @Override public void readFields(DataInput in) throws IOException { first.readFields(in); second.readFields(in); } @Override public void write(DataOutput out) throws IOException { first.write(out); out.write('\t');//錯誤原因!!!
錯誤原因是DataInput類的readFully方法讀到了檔案末尾丟擲了異常……
在TextPair類的readFields方法中直接使用的Text類的readFields方法
public void readFields(DataInput in) throws IOException {
int newLength = WritableUtils.readVInt(in);
setCapacity(newLength, false);
in.readFully(bytes, 0, newLength);
length = newLength;
}
這是Text類的readFields方法原始碼,裡面牽扯到兩個類,一個是Java的DataInput類,一個是WritableUtils類,大體看了一下,Text的在序列化和反序列化時,把資料長度寫入第一個byte,你在序列化時,在寫了第一個變數後,又寫了一個轉義字元,然後繼續寫下一個變數,而在你讀的時候卻沒做處理,這樣就會導致讀第二個變數的時候獨到的第一個byte不是第二個變數的長度,而是你打的\t,長度出錯了,如果讀的長度比原來的長度短,反而不會出錯(但是結果不對),如果比原長度長,那肯定就是EOFException,沒東西可讀了。
把out.write("\t")去掉就好了。
相關推薦
MapReduce Error: java.io.EOFException at java.io.DataInputStream.readFully(DataInputStream.java:197)
13/07/23 22:53:05 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId= 13/07/23 22:53:05 WARN mapred.JobClient: Use Gen
tomcat啟動時報:IOException while loading persisted sessions: java.io.EOFException的解決方案 ZT
tint fan add ada osi ostc lac important .cn 錯誤代碼如下: 嚴重: IOException while loading persisted sessions: java.io.EOFException java.io.E
zookeeper報錯: org.I0Itec.zkclient.exception.ZkMarshallingError: java.io.EOFException
zookeeper報錯: org.I0Itec.zkclient.exception.ZkMarshallingError: java.io.EOFException 主要因為是沒有序列化。 可以使用預設的序列化類。如下所示: zkClient.setZkSerializer( new Ser
嚴重: Exception loading sessions from persistent storage java.io.EOFException
刪除Tomcat裡面的work\Catalina\localhost下的專案檔案內容即可解決.因為在你部署自己的專案檔案的時候,tomcat會自動給你新增一個session檔案,出現該報錯情景下,你就需要將該Tomcat裡面的work\Catalina\localhost下的專案檔案幹掉,自然就
JavaI/O中使用readUTF()報java.io.EOFException暫時解決方案
練習JavaI/O時自己試著寫demo,當使用RandomAccessFile的readUTF()方法時報java.io.EOFException。原始碼如下: DirList.java a.txt檔案內容如下: 執行程式,輸出結果如下: 檢視輸出結果,並且與輸出語句一
DataInput.readInt()報錯:java.io.EOFException
實現WritableComparable介面序列化時,在readFields方法裡,使用DataInput的readInt方法讀取在write方法裡寫的int,報錯:EOFException。 這個錯的意思是:輸入流已經到了結尾,在這裡的意思就是說,輸入流裡不夠一個整形(32位),查到的
記一個異常java.io.EOFException: No content to map to Object due to end of input
一個提供rest介面的服務出現了以下的異常(後臺介面報錯): [WARN ] 2018-04-16 14:10:02,919 --http-nio-8090-exec-9-- [org.jboss.resteasy.core.ExceptionHandler] Failed
hadoop讀取檔案java.io.EOFException解決
今天除錯hadoop讀取檔案系統的時候遇到了一個java.io.EOFException異常 原始程式碼 String path="hdfs://master:9000/user/hadoop-0.20.2/tmp/7-0-initial-docid"; FileSy
MultipartFile 檔案上傳時 java.io.EOFException 連線斷開的解決辦法
java.io.EOFException: Unexpected EOF read on the socket at org.apache.coyote.http11.Htt
supervisor無法正常執行Caused by: java.io.EOFException: null
告警發現一個supervisor停止,重啟啟動服務,但無法正常執行,檢視日誌報錯如下: 2015-09-27 10:21:53 c.n.c.f.i.CuratorFrameworkImpl [INFO] Starting 2015-09-27 10:21:53 o.a.z.
Error:Execution failed for task ':app:transformClassesWithMultidexlistForDebug'. > java.io.IOExcepti
在升級到as3.0後出現部分錯誤,但是通過查度娘解決起來還可以,但是遇到了以上這個錯誤著實讓我頭大!!! 主要解決方法: 由於自己專案有很多第三方依賴,導致dex檔案合併失敗,解決方法 在Module下的build.gradle中新增 multiDexEnabl
(全面)Tomcat執行時,報異常:IOException while loading persisted sessions: java.io.EOFException
JDK1.7+Tomcat7.0+SSM 一月 02, 2019 8:35:28 下午 org.apache.catalina.session.StandardManager doLoad 嚴重: IOException while loading persisted sessions: j
java.io.EOFException: End of File Exception between local host is: "thinkpad/127.0.0.1"; destination
我這個是單機模式的hadoop環境 java.io.EOFException: End of File Exception between local host is: "thinkpad/127.0.0.1"; destination host is: "localhost
java.io.EOFException的解決辦法
有時我們在非正常關閉Tomcat的時候,下次啟動可能會出現以下錯誤 EOFException表示輸入過程中意外地到達檔案尾或流尾的訊號,導致從session中獲取資料失敗。異常是tomcat本身的問題,由於tomcat上次非正常關閉時有一些活動session被持久化(表
hdfs讀取檔案出發java.io.EOFException異常
[2014-05-05 17:42:51] [main] DEBUG - Error making BlockReader. Closing stale NioInetPeer(Socket[addr=/XXXXX,port=50010,localport=55897]) java.io.EOFExcep
UDP網路程式設計時出現:Exception in thread "main" java.io.EOFException異常
import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; imp
Tomcat啟動時報錯java.io.EOFException的解決方法
嚴重: Exception loading sessions from persistent storage java.io.EOFException 刪除Tomcat裡面的work/Catalina/localhost下的內容即可解決 Tomcat在啟動時出現如
android studio 錯誤:“java.io.EOFException”
大概一週前吧,執行Android應用的時候突然報“java.io.EOFException”,報錯的地方是在JsonReader裡面,當時第一懷疑物件就是後臺的小夥伴改了什麼東西,導致返回的json格式出問題了,然後各種除錯,查資料,版本回退,後臺返回資料寫死等
Java反序列化時報異常java.io.EOFException
問題 第一種解決辦法 在寫完物件後,加一句 oos.writeObject(null); 插入null是用來判斷是否讀取到結尾。oos是ObjectOutputStream例項。 然後讀物件的時候,使用while ((obj = o
android-ksoap2 java.io.EOFException異常
11-04 14:33:52.085: W/System.err(7355): java.io.EOFException 11-04 14:33:52.085: W/System.err(7355): at libcore.io.Streams.readAsciiLine