[HADOOP] 줄 바꿈하기 전에 너무 많은 바이트 : 스파크지도 / 필터 때 java.io.IOException를 던졌습니다 2147483648
HADOOP줄 바꿈하기 전에 너무 많은 바이트 : 스파크지도 / 필터 때 java.io.IOException를 던졌습니다 2147483648
I는 각각의 라인에 의해 분리 된 두 개의 열에 포함되는 크기 7기가바이트 간단한 파일 데 |이 파일 .I이 작성한 RDD을하지만이 RDD에지도 또는 필터 변환을 사용할 때 너무 많은 바이트 예외를 얻는다.
아래에있는 내 파일의 샘플 데이터입니다.
116010100000000007|33448
116010100000000014|13520
116010100000000021|97132
116010100000000049|82891
116010100000000049|82890
116010100000000056|93014
116010100000000063|43434
116010100000000063|43434
여기에 코드입니다
val input = sparkContext.textFile("hdfsfilePath");
input.filter(x=>x.split("|")(1).toInt > 15000).saveAsTextFile("hdfs://output file path")
아래는 내가 점점 오전 예외입니다.
java.io.IOException: Too many bytes before newline: 2147483648
at org.apache.hadoop.util.LineReader.readDefaultLine(LineReader.java:249)
at org.apache.hadoop.util.LineReader.readLine(LineReader.java:174)
at org.apache.hadoop.mapreduce.lib.input.UncompressedSplitLineReader.readLine(UncompressedSplitLineReader.java:94)
at org.apache.hadoop.mapred.LineRecordReader.<init>(LineRecordReader.java:136)
해결법
-
==============================
1.파이프 구분과 분할 선이, 내가 코드를 변경하고 지금은 작동하는 동안 문제는 내 스칼라 코드로했다. 아래의 변경된 코드입니다.
파이프 구분과 분할 선이, 내가 코드를 변경하고 지금은 작동하는 동안 문제는 내 스칼라 코드로했다. 아래의 변경된 코드입니다.
val input = sparkContext.textFile("hdfsfilePath"); input.filter(x=>x.split('|')(1).toInt > 15000).saveAsTextFile("hdfs://output file path")
"|"대신 '|'나는를 사용하도록 neeed 또는 "\\ |" 분할 방법이다.
-
==============================
2.나는 최근에이 문제를 가지고 있었다.
나는 최근에이 문제를 가지고 있었다.
나를 위해,이 메모리 문제 또는 스칼라 코드 문제가 아니었다.
그것은 불완전한 / 잘못된 CSV, 즉 CSV 파일의 마지막 행이 짧은 절단으로 밝혀졌다.
이 문제를 해결하려면 내가 수동으로 사용하여 마지막 줄을 제거
sed -i '$d' /fileName
하지만이 공통의 문제하다면, databricks 스파크-CSV 패키지를 사용하는 것이 더있을 수 있습니다 : https://github.com/databricks/spark-csv
DROPMALFORMED : 그것은 포함하는 스키마와 일치하지 않는 많거나 적은 예상보다 토큰 또는 토큰이 줄을 삭제. 어떤 내 경우에 유용 할 것으로 보인다.
from https://stackoverflow.com/questions/41213879/spark-map-filter-throws-java-io-ioexception-too-many-bytes-before-newline-2147 by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하둡은 하둡 1.0.4에서 업그레이드 한 후 실행되지 맵리 듀스 작업을 2.2.0 (0) | 2019.10.22 |
---|---|
[HADOOP] 하둡은 TestDFSIO 벤치 마크를 2.6.0 (0) | 2019.10.22 |
[HADOOP] 변수는 루프로 전달 될 수 없습니다 (0) | 2019.10.22 |
[HADOOP] 오류 의사 분산 모드에서 mapred.map.tasks를 설정할 때 (0) | 2019.10.22 |
[HADOOP] 빈 RDD에 변환의 결과 (0) | 2019.10.22 |