Dav*_*osa 1 google-cloud-storage google-bigquery google-cloud-platform google-cloud-api-gateway google-cloud-vertex-ai
我想知道将 Google BigQuery 表查询结果存储到 Google Cloud 存储的最佳方式是什么。我的代码目前正在一些 Jupyter Notebook 中运行(在 Vertex AI Workbench 中,与 BigQuery 数据源以及 Cloud Storage 目标相同的项目),如下所示:
# CELL 1 OF 2
from google.cloud import bigquery
bqclient = bigquery.Client()
# The query string can vary:
query_string = """
SELECT *
FROM `my_project-name.my_db.my_table`
LIMIT 2000000
"""
dataframe = (
bqclient.query(query_string)
.result()
.to_dataframe(
create_bqstorage_client=True,
)
)
print("Dataframe shape: ", dataframe.shape)
# CELL 2 OF 2:
import pandas as pd
dataframe.to_csv('gs://my_bucket/test_file.csv', index=False)
Run Code Online (Sandbox Code Playgroud)
此代码大约需要 7.5 分钟才能成功完成。
是否有更优化的方法来实现上面所做的事情?(这意味着更快,但也许其他方面还可以改进)。
一些附加说明:
CELL 2 OF 2),因为第一个部分是从Google 官方文档借用的。我已经尝试过这个,但它不起作用,但是在同一个线程中这个选项工作正常。谢谢。
小智 5
使用导出数据语句:
EXPORT DATA OPTIONS(
uri='gs://bucket/folder/*.csv',
format='CSV',
overwrite=true,
header=true,
field_delimiter=';') AS
SELECT *
FROM `my_project.my_db.my_table`
LIMIT 2000000
Run Code Online (Sandbox Code Playgroud)
直接在 BQ Console 中、通过命令行或在 Python 脚本中执行。
from google.cloud import bigquery
client = bigquery.Client()
query_job = client.query(
"""
EXPORT DATA OPTIONS(
uri='gs://bucket/folder/*.csv',
format='CSV',
overwrite=true,
header=true,
field_delimiter=';') AS
SELECT *
FROM `my_project.my_db.my_table`
LIMIT 2000000
"""
)
results = query_job.result() # Waits for job to complete.
Run Code Online (Sandbox Code Playgroud)
注意LIMIT:注意,这LIMIT不会减少非聚集表中读取的数据量。仅返回什么。(看这里)
| 归档时间: |
|
| 查看次数: |
5822 次 |
| 最近记录: |