복붙노트

[HADOOP] 여러 파일을로드 할 때 PySpark 작업이 실패하고 파일이 누락되었습니다 [중복]

HADOOP

여러 파일을로드 할 때 PySpark 작업이 실패하고 파일이 누락되었습니다 [중복]

PySpark를 사용하여 S3에서 여러 JSON 파일을로드 할 때 오류가 발생하고 파일이 없으면 Spark 작업이 실패합니다.

이것이 내가 PySpark와 함께 내 직업에 5 일을 추가하는 방법입니다.

days = 5
x = 0
files = []

while x < days:
    filedate = (date.today() - timedelta(x)).isoformat()
    path = "s3n://example/example/"+filedate+"/*.json"
    files.append(path)
    x += 1

rdd = sc.textFile(",".join(files))                      
df = sql_context.read.json(rdd, schema)

PySpark가 누락 된 파일을 무시하고 작업을 계속하도록하려면 어떻게해야합니까?

해결법

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

    1.파일을로드하려고 시도하는 함수를 사용하십시오. 파일이 없으면 실패하고 False를 리턴합니다.

    파일을로드하려고 시도하는 함수를 사용하십시오. 파일이 없으면 실패하고 False를 리턴합니다.

    from py4j.protocol import Py4JJavaError
    
    def path_exist(sc, path):
        try:
            rdd = sc.textFile(path)
            rdd.take(1)
            return True
        except Py4JJavaError as e:
            return False
    

    이를 통해 AWS Cli 또는 S3 명령을 사용하지 않고도 파일을 목록에 추가하기 전에 파일을 사용할 수 있는지 확인할 수 있습니다.

    days = 5
    x = 0
    files = []
    
    while x < days:
        filedate = (date.today() - timedelta(x)).isoformat()
        path = "s3n://example/example/"+filedate+"/*.json"
        if path_exist(sc, path):
            files.append(path)
        else:
            print('Path does not exist, skipping: ' + path)
        x += 1
    
    rdd = sc.textFile(",".join(files))                      
    df = sql_context.read.json(rdd, schema)
    

    http://www.learn4master.com/big-data/pyspark/pyspark-check-if-file-exists에서이 솔루션을 찾았습니다.

  2. from https://stackoverflow.com/questions/42340407/pyspark-job-fails-when-loading-multiple-files-and-one-is-missing by cc-by-sa and MIT license