是的,BigQuery支持并行写入同一张表,并且通常是有效率的。以下是一个代码示例,展示如何在BigQuery中并行写入同一张表:
from google.cloud import bigquery
# 创建BigQuery客户端
client = bigquery.Client()
# 定义表名和数据
table_id = "your-project.your_dataset.your_table"
data = [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30},
{"name": "Charlie", "age": 35}
]
# 创建一个BigQuery表写入作业
job_config = bigquery.LoadJobConfig(
write_disposition=bigquery.WriteDisposition.WRITE_APPEND
)
# 启动并行写入作业
with client.batch() as batch:
for row in data:
# 创建表行数据
table_row = [bigquery.Row([row["name"], row["age"]])]
# 将行数据添加到批处理作业中
batch.insert_rows_json(table_id, table_row, job_config=job_config)
# 等待作业完成
batch.result()
print("数据写入完成")
在上述示例中,我们使用batch()
方法创建一个批处理对象,然后使用insert_rows_json()
方法将行数据添加到批处理作业中。write_disposition
参数设置为WRITE_APPEND
,表示在表中追加数据而不是覆盖。
通过并行写入,我们可以同时将多个行数据写入表中,从而提高写入速度和效率。
请注意,虽然并行写入是有效率的,但在某些情况下可能会出现并发写入冲突。因此,在实际使用中,您可能需要根据具体情况做进一步的调整和优化。
上一篇:BigQuery值拆分问题。