Cloud Function 可以处理来自 GCS 的文件大小有多大?
How large a file size from GCS can handle in Cloud Function?
我想使用 GCP 中的 Cloud Function 将 >=4 GB 的数据从 GCS 传输到 BigQuery。有可能这样做吗?我尝试使用 mkfile
命令创建一个 5 GB 的临时数据文件并尝试上传到 GCS。花了很长时间,仍然没有上传。这是否意味着 GCS 无法处理超过特定大小的文件..
在我参考的文档中:https://cloud.google.com/storage/quotas,我了解到 GCS 最多可处理 5 TiB 的数据。那为什么上传5GB的数据需要很长时间呢
是否可以通过 Cloud Function 处理超过 4 GB 的数据从 GCS 传输到 BigQuery?CF 和 GCS 可以处理多少 GB 的数据?有没有可能通过任何服务减少数据大小?我可以获得与 CF 和 GCS 可以处理的数据限制相关的任何文档吗?
如果您上传到 GCS 的速度很慢,您可以尝试:
使用带有 -m 开关的 gsutil 上传以使用多个进程 (`gsutil cp -m file.csv gs://bucket/destination.
将 CSV 拆分为多个具有随机名称的文件(如 gs://bucket/0021asdcq1231scjhas.csv
并为每个文件使用多个进程并行上传。这样您将使用多个摄取云存储中的服务器。
你问题的第一句话:
I want to transfer a >=4 GB of data from GCS to BigQuery(BQ)
如果我们到此为止,您不需要云功能 (CF) 进行传输。 BQ 完全有能力从 GCS 中提取您的 BIG CSV 文件(最大 15TB)。但是您需要触发此摄取或更准确地说是 BQ 加载作业。这里进入云功能。它可以插入你的桶。一旦您的文件完成上传到 GCS,它就会触发云功能,该功能将 运行 BigQuery 加载作业。
下面是使用 python39 中的 CF 将作业加载到 运行 的示例。 不要忘记设置 table_id
要了解更多信息或其他语言,您可以查看此 doc.
# the file should be named main.py
def load_csv_from_gcs_to_bq(data, _):
file_name = data["name"]
bucket_name = data["bucket"]
# Construct the GCS file uri to load
uri = f"gs://{bucket_name}/{file_name}"
from google.cloud import bigquery
# Construct a BigQuery client object.
client = bigquery.Client()
# TODO: Set table_id to the ID of the table to create.
# table_id = "your-project.your_dataset.your_table_name"
job_config = bigquery.LoadJobConfig(
autodetect=True,
skip_leading_rows=1,
source_format=bigquery.SourceFormat.CSV,
)
load_job = client.load_table_from_uri(
uri, table_id, job_config=job_config
) # Make an API request.
load_job.result() # Waits for the job to complete.
destination_table = client.get_table(table_id) # Make an API request.
print("Loaded {} rows.".format(destination_table.num_rows))
与requirements.txt
文件
google-cloud-bigquery==2.24.0
这里是部署 CF 的命令(set YOUR_GCS_BUCKET without gs://)查看此 link 了解更多详细信息。
gcloud functions deploy load_csv_from_gcs_to_bq \
--region europe-west1 \
--runtime python39 \
--timeout 300 \
--memory 128 \
--trigger-resource <YOUR_GCS_BUCKET> \
--trigger-event google.storage.object.finalize
在 BQ 中加载 CSV 后,您可以使用 BQ 进行多种类型的转换并将结果存储在新的 table(s) 中。
但如果您需要自定义和非常具体的转换,对于数据的大小,Dataflow 将是更好的选择。
我想使用 GCP 中的 Cloud Function 将 >=4 GB 的数据从 GCS 传输到 BigQuery。有可能这样做吗?我尝试使用 mkfile
命令创建一个 5 GB 的临时数据文件并尝试上传到 GCS。花了很长时间,仍然没有上传。这是否意味着 GCS 无法处理超过特定大小的文件..
在我参考的文档中:https://cloud.google.com/storage/quotas,我了解到 GCS 最多可处理 5 TiB 的数据。那为什么上传5GB的数据需要很长时间呢
是否可以通过 Cloud Function 处理超过 4 GB 的数据从 GCS 传输到 BigQuery?CF 和 GCS 可以处理多少 GB 的数据?有没有可能通过任何服务减少数据大小?我可以获得与 CF 和 GCS 可以处理的数据限制相关的任何文档吗?
如果您上传到 GCS 的速度很慢,您可以尝试:
使用带有 -m 开关的 gsutil 上传以使用多个进程 (`gsutil cp -m file.csv gs://bucket/destination.
将 CSV 拆分为多个具有随机名称的文件(如
gs://bucket/0021asdcq1231scjhas.csv
并为每个文件使用多个进程并行上传。这样您将使用多个摄取云存储中的服务器。
你问题的第一句话:
I want to transfer a >=4 GB of data from GCS to BigQuery(BQ)
如果我们到此为止,您不需要云功能 (CF) 进行传输。 BQ 完全有能力从 GCS 中提取您的 BIG CSV 文件(最大 15TB)。但是您需要触发此摄取或更准确地说是 BQ 加载作业。这里进入云功能。它可以插入你的桶。一旦您的文件完成上传到 GCS,它就会触发云功能,该功能将 运行 BigQuery 加载作业。
下面是使用 python39 中的 CF 将作业加载到 运行 的示例。 不要忘记设置 table_id
要了解更多信息或其他语言,您可以查看此 doc.
# the file should be named main.py
def load_csv_from_gcs_to_bq(data, _):
file_name = data["name"]
bucket_name = data["bucket"]
# Construct the GCS file uri to load
uri = f"gs://{bucket_name}/{file_name}"
from google.cloud import bigquery
# Construct a BigQuery client object.
client = bigquery.Client()
# TODO: Set table_id to the ID of the table to create.
# table_id = "your-project.your_dataset.your_table_name"
job_config = bigquery.LoadJobConfig(
autodetect=True,
skip_leading_rows=1,
source_format=bigquery.SourceFormat.CSV,
)
load_job = client.load_table_from_uri(
uri, table_id, job_config=job_config
) # Make an API request.
load_job.result() # Waits for the job to complete.
destination_table = client.get_table(table_id) # Make an API request.
print("Loaded {} rows.".format(destination_table.num_rows))
与requirements.txt
文件
google-cloud-bigquery==2.24.0
这里是部署 CF 的命令(set YOUR_GCS_BUCKET without gs://)查看此 link 了解更多详细信息。
gcloud functions deploy load_csv_from_gcs_to_bq \
--region europe-west1 \
--runtime python39 \
--timeout 300 \
--memory 128 \
--trigger-resource <YOUR_GCS_BUCKET> \
--trigger-event google.storage.object.finalize
在 BQ 中加载 CSV 后,您可以使用 BQ 进行多种类型的转换并将结果存储在新的 table(s) 中。
但如果您需要自定义和非常具体的转换,对于数据的大小,Dataflow 将是更好的选择。