1

DirectFileOutputCommitter는 Spark 2.2.0에서 더 이상 사용할 수 없습니다. S3에 쓰는 것은 아주 오래 걸린다 (3 시간 대 2 분). 나는스파크 2.2.0 FileOutputCommitter

스파크-SQL 작동하지 않습니다 같은
spark-shell --conf spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2 

spark-sql --conf spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2 

위의 명령이 될 것으로 보인다, 이렇게함으로써 스파크 쉘에서 2 FileOutputCommitter 버전을 설정하여이 문제를 해결할 수 있어요 버전 = 2로 설정했지만 쿼리가 실행되면 버전 1 동작을 계속 표시합니다.

두 질문에,

1) 어떻게 스파크-SQL과 FileOutputCommitter 버전이 동작을받을 수 있나요?

2) Spark 2.2.0에서 DirectFileOutputCommitter를 계속 사용할 수있는 방법이 있습니까? 내가이 문제를 공격 한

Spark 1.6 DirectFileOutputCommitter

답변

4

:

관련 항목 [I는 누락 된 데이터의 비 - 제로 기회와 괜찮아]. Spark는 경주 상황에서 데이터가 손실 될 수 있으므로 DirectFileOutputCommitter의 사용을 권장하지 않습니다. 알고리즘 버전 2는 많은 도움이되지 않습니다.

gzip을 사용하여 s3에서 데이터를 저장하려고 시도했지만 약간의 이점이 있습니다.

실제 문제는 스파크가 s3 : /// _ temporary/0에 처음 쓴 다음 임시에서 출력으로 데이터를 복사한다는 것입니다. 이 프로세스는 s3에서 꽤 느립니다 (일반적으로 6MBPS). 많은 양의 데이터가 발생하면 상당한 속도 저하가 발생합니다.

대안은 먼저 HDFS에 쓰고 distcp/s3distcp를 사용하여 데이터를 s3에 복사하는 것입니다.

또한 netflix에서 제공하는 솔루션을 찾을 수 있습니다 : https://github.com/rdblue/s3committer. 나는 그것을 평가하지 않았다.