Самый быстрый способ загрузки данных из корзины GCS

Пришлось переписать задачи.

- copy:
        dest: /tmp/ansiblefile.txt
        content: |
          {% if myFoo %}
            ; lots of stuff
          {% else %}
            ; lots of other stuff
          {% endif %}
- copy:
    dest: /foo
    content: |
      ; lots of stuff
  when: myFoo

- copy:
    dest: /foo
    content: |
      ; lots of stuff
  when: not myFoo

По-моему, и то и другое нормально. Однако я бы использовал последний подход, так как мне проще не иметь дело с шаблонами jinja; документация для шаблонов jinja не очень подробная и простая для понимания.

0
31.01.2021, 18:50
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
0
18.03.2021, 22:33

Теги

Похожие вопросы