从bigquery卸载表到Google cloud storag的速度非常慢

2024-10-04 01:23:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行一个python脚本,它将一个名为newdataset.newtable2的表从Bigquery卸载到我应用程序的google存储桶中。在

这是我的代码:

scope = ["https://www.googleapis.com/auth/bigquery"]
project_id='txxxxxxx9'
dataset_id = 'newdataset'
table_id = 'newtable2'

with open('/home/xxxxxxx/Dropbox/access_keys/google_storage/xxxxxxxx.json') as auth_file:
    key = json.load(auth_file)

client_email = key['client_email']
pv_key = key['private_key']
credentials = SignedJwtAssertionCredentials(client_email, pv_key, scope=scope)

bigquery_service = build('bigquery', 'v2', credentials=credentials)

job_data = {
    'jobReference': {
            'projectId': project_id,
            'jobId': str(uuid.uuid4())
        },
    'configuration': {
        'extract': {
            'sourceTable': {
                'projectId': project_id,
                'datasetId': dataset_id,
                'tableId': table_id,
                },
            'destinationUris': ['gs://xxxxxxx/test.csv'],
            'destinationFormat': 'CSV'
            }
        }
    }

query_job =  bigquery_service.jobs().insert(projectId=project_id, body=job_data).execute()

我对请求的缓慢感到惊讶。我的桌子是300Mb,请求持续5分钟。注意,这个请求并没有出现在我的BigQuery用户界面的作业部分,但是5分钟后,.csv可以在我的bucket中找到,看起来不错。在

在Redshift和S3中,这样的请求不会持续5秒。我的问题是:我做的对吗?还是我错过了什么?在

如果有人能告诉我,为什么我的基本任务需要这么多时间?在

注意:我现在使用的是免费帐户(未升级)


Tags: keyprojectclientauthidemailgooglejob
1条回答
网友
1楼 · 发布于 2024-10-04 01:23:03

按照你制定请求的方式,它是在一个worker中编写一个300mbcsv文件。这将相当缓慢。(5分钟仍然比我预期的长,但在合理的范围内)

如果在目的地URI中使用glob模式(例如gs://xxxxxxx/test*.csv),那么它应该更快,因为它可以并行进行。在

相关问题 更多 >