[HADOOP] 지역 사용하여 자바로 FTP에서 파일을 다운로드하면 파일을 읽을 수 있습니다 - 인코딩 문제를
HADOOP지역 사용하여 자바로 FTP에서 파일을 다운로드하면 파일을 읽을 수 있습니다 - 인코딩 문제를
나는이 FTP에서 매우 큰 파일을 읽고 자바를 사용하여 로컬 컴퓨터에 기록하는 코드를 개발했다. 다음을 수행하는 코드입니다. 이것은 CustomInputFormat의 RecordReader 내부의 다음 (텍스트 키, 텍스트 값)에서 일부입니다
if(!processed)
{
System.out.println("in processed");
in = fs.open(file);
processed=true;
}
while(bytesRead <= fileSize) {
byte buf[] = new byte[1024];
try {
in.read(buf);
in.skip(1024);
bytesRead+=1024;
long diff = fileSize-bytesRead;
if(diff<1024)
{
break;
}
value.set(buf, 0, 1024); // This is where the value of the record is set and it goes to the mapper .
}
catch(Exception e)
{
e.printStackTrace();
}
}
if(diff<1024)
{
int difference= (int) (fileSize-bytesRead);
byte buf[] = new byte[difference];
in.read(buf);
bytesRead+=difference;
}
System.out.println("closing stream");
in.close();
쓰기가 끝난 후, 나는 전송이 수행되며 대상에서 파일의 크기가 소스에서와 동일한 것을 알 수있다. 하지만이 파일을 열 수 없습니다 오전 에디터 오류 등을 제공합니다
gedit has not been able to detect the character coding.
Please check that you are not trying to open a binary file.
Select a character coding from the menu and try again.
이 질문 : JakartaFtpWrapper를 사용하여 Java 업로드 도트 JPG - 내가 믿는 내 관련이 파일을 읽을 수 있습니다,하지만 난 그것의 의미가 없습니다.
모든 포인터?
해결법
-
==============================
1.귀하의 코드를 복사가 완료되고 100 %에게 등급 넌센스 발언. 다음과 같이 자바에서 스트림을 복사 할 수있는 표준 방법입니다 :
귀하의 코드를 복사가 완료되고 100 %에게 등급 넌센스 발언. 다음과 같이 자바에서 스트림을 복사 할 수있는 표준 방법입니다 :
int count; byte[] buffer = new byte[8192]; // or more if you like while ((count = in.read(buffer)) > 0) { out.write(buffer, 0, count); }
다른 모든 보풀을 제거. 그것은 단지 시간과 공간을 낭비하고 명확하게 전송중인 데이터를 손상된다.
-
==============================
2.난 당신의 코드에 많은 문제를 참조하십시오. 그것은 전체 파일을 읽을 수있는 이상한 방법입니다. 예를 들어 :
난 당신의 코드에 많은 문제를 참조하십시오. 그것은 전체 파일을 읽을 수있는 이상한 방법입니다. 예를 들어 :
in.read(buf); in.skip(1024); bytesRead+=1024;
잘못, in.read (버피)는 읽은 바이트 수를 반환하고 + N 바이트를 읽어 현재 위치 예전 위치로 스트림 위치를 설정합니다. 그래서 당신은 건너 뛸 필요가 없습니다 - 오류 이잖아, 읽기가 이미 스트림을 배치한다.
파일의 체크섬이 확실하게 확인합니다, 그들은 동일합니다. (MD5 또는 뭔가를 사용) 나는 어느 체크섬 확신 않으며, filesizes은 동일합니다.
당신은 파일 처리를 위해 아파치 평민-IO를 사용해야합니다. 그렇지 않으면 파일 처리에 오라클 문서 봐.
from https://stackoverflow.com/questions/14117719/downloading-files-from-ftp-to-local-using-java-makes-the-file-unreadable-encod by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 돼지 - 간단한 부하에 대한 예외 (0) | 2019.10.12 |
---|---|
[HADOOP] Sqoop을 명령은 하둡에서 작동합니다 추가 않는 방법 (0) | 2019.10.12 |
[HADOOP] 어떻게 실행 고정 표시기 컨테이너에서 명령을 실행하려면? (0) | 2019.10.12 |
[HADOOP] 지역의 HBase를 번호는 성장 계속 (0) | 2019.10.12 |
[HADOOP] 계단식의 직교 제품 (0) | 2019.10.12 |