В методе "Уменьшить установку" я пытаюсь закрыть объект BufferedReader
и получить закрытое исключение FileSystem
. Это происходит не всегда. Это кусок кода, который я использовал для создания BufferedReader
.
String fileName = <some HDFS file path>
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
Path hdfsPath = new Path(filename);
FSDataInputStream in = fs.open(hdfsPath);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
Я читаю содержимое из буферизованногоReader, и как только все чтение сделано, я закрываю его.
Это фрагмент кода, который читает его
String line;
while ((line = reader.readLine()) != null) {
// Do something
}
Это фрагмент кода, который закрывает читателя.
if (bufferedReader != null) {
bufferedReader.close();
}
Это трассировка стека для исключения, которое происходит, когда я делаю bufferedReader.close()
.
I, [2013-11-18T04: 56: 51.601135 # 25683] INFO -: try_201310111840_142285_r_000009_0: at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:565)
I, [2013-11-18T04: 56: 51.601168 # 25683] INFO -: try_201310111840_142285_r_000009_0: at org.apache.hadoop.hdfs.DFSInputStream.close(DFSInputStream.java:522)
I, [2013-11-18T04: 56: 51.601199 # 25683] INFO -: try_201310111840_142285_r_000009_0: at java.io.FilterInputStream.close(FilterInputStream.java:155)
I, [2013-11-18T04: 56: 51.601230 # 25683] INFO -: try_201310111840_142285_r_000009_0: at sun.nio.cs.StreamDecoder.implClose(StreamDecoder.java:358)
I, [2013-11-18T04: 56: 51.601263 # 25683] INFO -: try_201310111840_142285_r_000009_0: at sun.nio.cs.StreamDecoder.close(StreamDecoder.java:173)
I, [2013-11-18T04: 56: 51.601356 # 25683] INFO -: try_201310111840_142285_r_000009_0: at java.io.InputStreamReader.close(InputStreamReader.java:182)
I, [2013-11-18T04: 56: 51.601395 # 25683] INFO -: try_201310111840_142285_r_000009_0: at java.io.BufferedReader.close(BufferedReader.java:497)
Я не уверен, почему это исключение происходит. Это не многопоточность, и поэтому я не ожидаю, что там будет какое-то соревнование. Не могли бы вы помочь мне понять.
Спасибо,
Venk