GCS 버킷에서 데이터를 다운로드하는 가장 빠른 방법

GCS 버킷에서 데이터를 다운로드하는 가장 빠른 방법

특정 버킷에는 특정 패턴에 따라 일부 파일을 로컬로 다운로드하는 GCS데 일반적으로 사용하는 수백만 개의 파일이 있습니다.GSUTIL

gsutil -m cp -R "gs://test-bucket-data-ingest/cm_data/AAA_AN/CM/*/a02_*_20210126*.csv.bz2" /home/xyz/testfiles/

나는 서버에서 실행 Linux하고 이러한 파일을 다운로드합니다. 다운로드하는데 시간이 많이 걸립니다.

그런 다음 압축을 풀고 빈 파일을 찾습니다.

bzip2 -d /home/xyz/testfiles/*
find . -name '*.csv' -size 0

파일을 다운로드하는 가장 빠르고 효율적인 방법을 찾고 있으며 이러한 모든 명령을 스크립트로 결합할 수 있는지... 일종의 매개변수화된 방식을 찾고 있습니다.

gsutil ls -l그래도 더 빠르게 작동합니다. 이것을 grep과 결합하여 빈 파일만 목록을 얻고 해당 특정 파일만 다운로드할 수 있습니다.

답변1

글쎄, 나는 이것을 답변으로 게시하고 있지만 새로운 답변은 언제나 환영합니다.

GSUTIL수백만 또는 수천 개의 파일을 검색해야 하는 경우 일부 패턴 일치 작업은 매우 느릴 수 있습니다. 먼저 목록을 나열하고 절대 파일 경로를 사용하여 파일을 다운로드하는 것이 좋습니다.

vikrant_singh_rana@cloudshell:~/download$ cat download_gcs_file.sh
#!/bin/bash

#below code will delete the file if it already exists in the current working directory
file="ls_output.csv"

if [ -f "$file" ] ; then
    rm "$file"
fi
#below code will list the files to output file ls_output.csv based on search pattern
gsutil ls -l "gs://test-bucket-data-prod-ingest/cm_data/AN/AM/*/a01_*_20210128*.csv.bz2" | awk '!hdr{ print "filename"; hdr=1; }; $1 <= 100{ print $3; }' >ls_output.csv

input_file_path='/home/vikrant_singh_rana/download/ls_output.csv'

#below code will read the input file name and download it from gcs location to local
count=0

{
    read
    while IFS=, read -r inputfilename
    do

        echo "input filename is:"$inputfilename

        if [ ! -z "$inputfilename" ] || [ "$inputfilename" != "filename" ]
        then
        echo "downloading file:" $inputfilename
        gsutil -m cp -R "$inputfilename" /home/vikrant_singh_rana/download/output/

        else echo "No Empty Files found"
        fi

        count=$[count + 1]
        echo "count is:" $count
    done
} < $input_file_path

#below will unzip the files to csv format
bzip2 -d /home/vikrant_singh_rana/download/output/*

입력 파일입니다

vikrant_singh_rana@cloudshell:~/download$ cat ls_output.csv
filename
gs://test-bucket-data-prod-ingest/cm_data/AN/AM/172.24.105.197-CORE-2/a01_1h_255_XYZ_202101282300_0009.csv.bz2

관련 정보