s3의 코드 최적화는 csv를 읽고 s3 버킷으로 다시 수집합니다.

다르 멘 드라 야다 브
ddict = defaultdict(set)
    
file_str = query_csv_s3(s3, BUCKET_NAME, filename, sql_exp, use_header)
            #  read CSV to dataframe
            df = pd.read_csv(StringIO(file_str))
            fdf = df.drop_duplicates(subset='cleverTapId', keep='first')
            fdf.dropna(inplace=True)
            col_one_list = fdf['identity'].tolist()
            col_two_list = fdf['cleverTapId'].tolist()
            for k, v in zip(col_one_list, col_two_list):
                ddict[k].add(v)
            for imkey in ddict:
                im_length = len(str(imkey))
                if im_length == 9:
                    if len(ddict[imkey]) == 1:
                        for value in ddict[imkey]:
                            tdict = {imkey:value}
                        write_to_csv(FILE_NAME,tdict)
                    else:
                        ctlist = list(ddict[imkey])
                        snp_dict = {imkey:'|'.join(ctlist)}
                        write_to_csv(SNAP_FILE_NAME, snp_dict)
    
                elif im_length > 0:
                    if len(ddict[imkey]) == 1:
                        for value in ddict[imkey]:
                            fdict = {imkey:value}
                        write_to_csv(FRAUD_FILE_NAME,fdict)
                    else:
                        pass
                        # mult_ct = list(ddict[imkey])
                        # mydict = {imkey:','.join(mult_ct)}
                        # write_to_csv(MY_FILENAME,mydict)
                else:
                    pass

여기 있습니다 write_to_csv:

def write_to_csv(filename,mdict):
    file_exists = os.path.isfile(filename)
    with open(filename,'a',newline='') as csvfile:
        headers = ['IM No', 'CT ID']
        writer = csv.DictWriter(
            csvfile,
            delimiter=',',
            lineterminator='\n',
            fieldnames=headers
        )
        if not file_exists:
            writer.writeheader()
        for key in mdict:
            writer.writerow({'IM No': key, 'CT ID': mdict[key]})

s3 select를 사용하여 2 col을 포함하는 csv 파일을 읽고 있습니다.

1 IM : 1 CTID, 일대 다 및 다 대다 파일을 생성하고 s3 버킷에 다시 업로드하고 있습니다.

s3에서 읽은 530MB 파일 크기를 처리하고 다시 업로드하는 데 18 시간이 걸리기 때문에 어떻게 더 최적화 할 수 있습니까?

모리츠

코드를 실행할 수 없기 때문에 이것은 본질적으로 추측입니다. CSV 파일에 데이터를 쓰는 방식은 매우 비효율적입니다.

SSD 또는 디스크에 대한 I / O 작업은 IT에서 비용이 더 많이 드는 작업 중 하나입니다. 지금 추가하려는 각 줄에 대해 파일을 연 다음 추가하고 파일을 다시 닫습니다. 즉, 530MB 파일의 경우 이러한 값 비싼 작업을 수백만 번 수행 할 것입니다.

작업 관리자의 성능 탭을 확인하면 디스크 사용량이 매우 높을 것입니다.

이들 중 일부 (또는 RAM이 충분히 큰 경우 모두)를 메모리에 버퍼링하고 마지막에 디스크에 플러시하는 것이 훨씬 더 효율적입니다.

대략 다음과 같습니다.

FRAUD_FILE_CONTENTS = []

# Computation stuff

FRAU_FILE_CONTENTS.append({"my": "dict"})

# After the loop

with open(FRAUD_FILE_NAME, "w"):
    # Write to CSV

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

AWS Lambda : S3 버킷에서 CSV 파일을 읽고 다른 S3 버킷에 업로드하는 방법은 무엇입니까?

분류에서Dev

Airflow는 S3에서 성공적으로 쓰고 읽지 만 docker-compose up에서 S3 로그를로드하지 않습니다.

분류에서Dev

AWS Lambda를 사용하여 AWS의 한 s3 버킷에서 다른 버킷으로 파일 이동

분류에서Dev

Amazon S3의 최적 버킷 수

분류에서Dev

S3 콘솔을 거치지 않고 AWS S3 버킷 콘텐츠를 온 프레미스로 다운로드

분류에서Dev

EC2의 AWS S3 버킷에 저장된 Python 스크립트를 실행하고 결과 파일을 다시 S3 버킷에 저장

분류에서Dev

다운로드하지 않고 S3 CSV 파일을 편집하는 방법은 무엇입니까?

분류에서Dev

Lambda의 / tmp 폴더에서 csv 파일을 읽고 필터링 한 다음 s3에 업로드합니다.

분류에서Dev

AWS amplify를 사용하여 읽기 전용 AWS S3 버킷에서 iOS 앱으로 이미지를 안전하게 다운로드하는 방법은 무엇입니까?

분류에서Dev

람다 함수와 boto3를 사용하여 s3 버킷에서 csv 파일을 읽는 방법은 무엇입니까?

분류에서Dev

Python에서 S3에 연결하고 CSV를 다운로드하는 방법

분류에서Dev

AWS s3가 다른 s3 버킷으로 리디렉션

분류에서Dev

Amazon S3에 이미지를 업로드합니다. 소스 코드

분류에서Dev

Python boto를 사용하여 S3 버킷의 특정 폴더 만 다운로드

분류에서Dev

잠시 후 S3 버킷에서 다른 버킷으로 객체를 자동으로 이동할 수 있습니까?

분류에서Dev

Django의 S3 버킷에서 미디어 파일을 다운로드하는 방법

분류에서Dev

Python configparser는 다운로드하지 않고 S3에서 구성을 읽습니다.

분류에서Dev

S3 버킷 + 폴더에서 파일 다운로드

분류에서Dev

NodeJS 콜백을 사용하여 S3 버킷에 업로드하는 것은 함수 여야합니다. 정의되지 않은 수신

분류에서Dev

S3의 csv 파일을 R의 Spark로 읽어옵니다.

분류에서Dev

Python에서 boto를 사용하여 한 경로에서 다른 s3 버킷으로 콘텐츠를 재귀 적으로 복사

분류에서Dev

SongsController # index의 AWS :: S3 :: PermanentRedirect "액세스하려는 버킷은 지정된 엔드 포인트를 사용하여 주소 지정되어야합니다."

분류에서Dev

비디오 다운로드를 위해 AWS S3 단독 또는 S3 및 Cloudfront 사용

분류에서Dev

boto3를 사용하여 S3 버킷에서 파일을 다운로드 할 때 ValueError?

분류에서Dev

s3 버킷의 분할 된 parquet 파일 읽기 최적화

분류에서Dev

DynamoDB 레코드를 Kinesis Stream으로 푸시 한 다음 S3로 푸시 (AWS 콘솔 만 사용)

분류에서Dev

한 버킷에서 이미지를 가져와 S3 boto의 다른 버킷에 넣는 방법

분류에서Dev

루트 사용자는 s3 버킷에서 다운로드가 거부되었습니다.

분류에서Dev

AWS S3는 AWS Lambda를 사용하여 여러 계정에 복사하고 내부 Lambda를 트리거하여 다른 버킷으로 복사합니다.

Related 관련 기사

  1. 1

    AWS Lambda : S3 버킷에서 CSV 파일을 읽고 다른 S3 버킷에 업로드하는 방법은 무엇입니까?

  2. 2

    Airflow는 S3에서 성공적으로 쓰고 읽지 만 docker-compose up에서 S3 로그를로드하지 않습니다.

  3. 3

    AWS Lambda를 사용하여 AWS의 한 s3 버킷에서 다른 버킷으로 파일 이동

  4. 4

    Amazon S3의 최적 버킷 수

  5. 5

    S3 콘솔을 거치지 않고 AWS S3 버킷 콘텐츠를 온 프레미스로 다운로드

  6. 6

    EC2의 AWS S3 버킷에 저장된 Python 스크립트를 실행하고 결과 파일을 다시 S3 버킷에 저장

  7. 7

    다운로드하지 않고 S3 CSV 파일을 편집하는 방법은 무엇입니까?

  8. 8

    Lambda의 / tmp 폴더에서 csv 파일을 읽고 필터링 한 다음 s3에 업로드합니다.

  9. 9

    AWS amplify를 사용하여 읽기 전용 AWS S3 버킷에서 iOS 앱으로 이미지를 안전하게 다운로드하는 방법은 무엇입니까?

  10. 10

    람다 함수와 boto3를 사용하여 s3 버킷에서 csv 파일을 읽는 방법은 무엇입니까?

  11. 11

    Python에서 S3에 연결하고 CSV를 다운로드하는 방법

  12. 12

    AWS s3가 다른 s3 버킷으로 리디렉션

  13. 13

    Amazon S3에 이미지를 업로드합니다. 소스 코드

  14. 14

    Python boto를 사용하여 S3 버킷의 특정 폴더 만 다운로드

  15. 15

    잠시 후 S3 버킷에서 다른 버킷으로 객체를 자동으로 이동할 수 있습니까?

  16. 16

    Django의 S3 버킷에서 미디어 파일을 다운로드하는 방법

  17. 17

    Python configparser는 다운로드하지 않고 S3에서 구성을 읽습니다.

  18. 18

    S3 버킷 + 폴더에서 파일 다운로드

  19. 19

    NodeJS 콜백을 사용하여 S3 버킷에 업로드하는 것은 함수 여야합니다. 정의되지 않은 수신

  20. 20

    S3의 csv 파일을 R의 Spark로 읽어옵니다.

  21. 21

    Python에서 boto를 사용하여 한 경로에서 다른 s3 버킷으로 콘텐츠를 재귀 적으로 복사

  22. 22

    SongsController # index의 AWS :: S3 :: PermanentRedirect "액세스하려는 버킷은 지정된 엔드 포인트를 사용하여 주소 지정되어야합니다."

  23. 23

    비디오 다운로드를 위해 AWS S3 단독 또는 S3 및 Cloudfront 사용

  24. 24

    boto3를 사용하여 S3 버킷에서 파일을 다운로드 할 때 ValueError?

  25. 25

    s3 버킷의 분할 된 parquet 파일 읽기 최적화

  26. 26

    DynamoDB 레코드를 Kinesis Stream으로 푸시 한 다음 S3로 푸시 (AWS 콘솔 만 사용)

  27. 27

    한 버킷에서 이미지를 가져와 S3 boto의 다른 버킷에 넣는 방법

  28. 28

    루트 사용자는 s3 버킷에서 다운로드가 거부되었습니다.

  29. 29

    AWS S3는 AWS Lambda를 사용하여 여러 계정에 복사하고 내부 Lambda를 트리거하여 다른 버킷으로 복사합니다.

뜨겁다태그

보관