Как загрузить несколько файлов AVRO с помощью команды загрузки bq

#google-bigquery #load #avro

#google-bigquery #загрузить #avro

Вопрос:

Я пытаюсь загрузить несколько файлов AVRO в большой запрос, следуя этим документам:

https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro

Согласно документам, команда для этого :

 bq --location=US load --source_format=AVRO [DATASET].[TABLE_NAME] "gs://mybucket/00/*.avro","gs://mybucket/01/*.avro"
  

Я создаю скрипт для поиска файлов и монтирую команду следующим образом:

 bq load --source_format=AVRO --noreplace foo.bar$123456  "gs://mybucket/foo/36.avro", "gs://mybucket/foo_bar/01.avro", "gs://mybucket/bar/211.avro"
  

Но это работает только тогда, когда у меня есть один такой файл:

 bq load --source_format=AVRO --noreplace foo.bar$123456 "gs://mybucket/foo/36.avro"
  

Когда я пытаюсь использовать команду для нескольких файлов, ошибка:

 Too many positional args, still have ["gs://mybucket/foo_bar/01.avro"]
  

Это мой скрипт для создания команд:

 def create_command_bq_load(buckets):
    for x, bucket in enumerate(buckets):
        command =  'bq load --source_format=AVRO --noreplace %s.%s_%s$%s' % (datasetname,  bucket['product'], bucket['event'],  bucket['data_partition'])
        if bucket['files']:
            command_file = ''
            for x in range(len(bucket['files'])):    
                command_file = '%s "%s",' % (command_file, bucket['files'][x])   
                command_file = command_file
            commands.append((command   ' '   command_file)[:-1])
    return commands
  

Какая-нибудь помощь?

Комментарии:

1. Решена, моя ошибка заключается в символе » между двумя файлами… правильный способ таков: загрузка bq —source_format=AVRO —noreplace foo.bar $ 123456 «gs://mybucket/foo/36.avro», «gs: //mybucket/foo_bar/01.avro», «gs: //mybucket/bar /211.avro»

2. Привет, Габриэль, если это решило вашу проблему, пожалуйста, опубликуйте это в качестве ответа, спасибо.

3. Мой плохой, это сделано!!

Ответ №1:

Решено, моя ошибка заключается в символе пробела ' ' между двумя файлами. Правильный способ заключается в следующем:

 bq load --source_format=AVRO --noreplace foo.bar$123456 "gs://mybucket/foo/36.avro","gs://mybucket/foo_bar/01.avro","gs://mybucket/bar/211.avro"