복붙노트

[HADOOP] 스파크 스트리밍 : java.io.FileNotFoundException : 파일이 없습니다 : <input_filename> ._ COPYING_

HADOOP

스파크 스트리밍 : java.io.FileNotFoundException : 파일이 없습니다 : ._ COPYING_

나는 HDFS에서 입력을 읽 스파크 스트리밍 응용 프로그램을 쓰고 있어요. 나는 실에 스파크 신청서를 제출 한 후 복사하는 HDFS 로컬 FS의 데이터 스크립트를 실행합니다.

그러나 스파크 응용 프로그램은 FileNotFoundException이 던지기 시작합니다. 나는 HDFS에 완전히 복사되기 전에 불꽃이 파일을 따기 때문에 이런 일이 생각합니다.

예외 추적의 일부는이 다음과 같은 :

java.io.FileNotFoundException: File does not exist: <filename>._COPYING_
        at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:66)
        at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:56)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsUpdateTimes(FSNamesystem.java:1932)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsInt(FSNamesystem.java:1873)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1853)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1825)
        at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:559)
        at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.getBlockLocations(AuthorizationProviderProxyClientProtocol.java:87)
        at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenodeProtocolServerSideTranslatorPB.java:363)
        at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:619)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1060)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2044)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2040)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2038)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:106)
        at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:73)

어떤 제안 방법이 문제를 해결하려면?

감사

해결법

  1. ==============================

    1.당신은 당신의 데이터 생산자가 현재 파일을 파일 이름 완전히 복사 한 파일에서 다른 복사가 필요합니다. 그럼 당신은 완전히 복사 된 파일을 받고 파일 d 스트림에 필터를 추가해야합니다. 예를 들면

    당신은 당신의 데이터 생산자가 현재 파일을 파일 이름 완전히 복사 한 파일에서 다른 복사가 필요합니다. 그럼 당신은 완전히 복사 된 파일을 받고 파일 d 스트림에 필터를 추가해야합니다. 예를 들면

    지속적인 파일 복사 접두사 _copying * 완전히 복사 파일 접두사 데이터 *

  2. from https://stackoverflow.com/questions/35643791/spark-streaming-java-io-filenotfoundexception-file-does-not-exist-input-file by cc-by-sa and MIT license