Укажите размер буфера чтения при чтении из Google Cloud Storage - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь открыть файл в облачном хранилище Google с помощью библиотеки cloudtorage.Я получаю сообщение об ошибке, что модуль cloudtorage не имеет атрибута «open».

Я хочу указать размер буфера чтения при загрузке файла из Google Cloud Storage в Google BigQuery.Это функция, которую я хочу использовать для этого.Параметры требуют файл как объект.

Client.load_table_from_file(file_obj, destination, rewind=False, size=None, num_retries=6, job_id=None, job_id_prefix=None, location=None, project=None, job_config=None)[source]

Загрузить содержимое этой таблицы из файлового объекта.

Есть ли другой способ передать файл облачного хранилища в качестве объекта этому методу?Или, возможно, другой способ загрузить файл из облачного хранилища в Google BigQuery, указав размер буфера чтения.

 from google.cloud import bigquery
 from google.cloud import storage 
 import cloudstorage as gcs
 def hello_gcs(event, context):
    gcs_file = gcs.open('no-trigger/transaction.csv')
    job_config = bigquery.LoadJobConfig()
    job_config.autodetect = False
    job_config.max_bad_records=1
    job_config.create_disposition = 'CREATE_IF_NEEDED'
    job_config.source_format = bigquery.SourceFormat.CSV
    load_job = bclient.load_table_from_file(
    gcs_file,
    dataset_ref.table(temptablename),
    location='asia-northeast1',
    size=2147483648,
    job_config=job_config)  # API request

1 Ответ

0 голосов
/ 06 марта 2019

Вы можете использовать метод load_table_from_uri(), чтобы исключить необходимость загрузки из GCS и предоставить файлоподобный объект при загрузке.Примерно так должно работать:

client.load_table_from_uri(
    'gs://your-bucket/path/to/file.csv',
    destination
)
...