如何在第三方 API 中发出请求并定期在谷歌 BigQuery 上加载结果?我应该使用哪些谷歌服务?



我需要从第三方API获取数据并将其摄取到Google BigQuery中。也许,我需要通过谷歌服务自动执行此过程以定期进行。

我正在尝试使用云函数,但它需要一个触发器。我也读过有关App Engine的文章,但我认为它不适合只有一个函数来发出拉取请求。

另一个问题是:我是否需要将数据加载到云存储中,或者我可以直接将数据加载到 BigQuery 中?我应该使用数据流并进行任何配置吗?

def upload_blob(bucket_name, request_url, destination_blob_name):
"""
Uploads a file to the bucket.
"""
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(destination_blob_name)
request_json = requests.get(request_url['url'])
print('File {} uploaded to {}.'.format(
bucket_name,
destination_blob_name))
def func_data(request_url):
BUCKET_NAME = 'dataprep-staging'
BLOB_NAME = 'any_name'
BLOB_STR = '{"blob": "some json"}'
upload_blob(BUCKET_NAME, request_url, BLOB_NAME)
return f'Success!'

我希望提供有关我应该用于创建此管道的架构(谷歌服务)的建议。例如,使用云函数(从 API 获取数据),然后使用服务"X"计划作业将数据输入存储,最后从存储中提取数据。

您可以使用函数。创建一个 http 触发的函数,并使用云调度程序定期调用它。

顺便说一下,你也可以调用appengine或云运行的http端点。

关于存储,答案是否定的。如果 API 结果对于函数允许的内存来说不是太大,则可以写入/tmp目录并使用该文件将数据加载到 bigquery。如果需要,您可以将函数的大小调整为 2go

最新更新