将np.array或python列表对象保存为BigQuery中单个记录的最佳方法?

问题描述 投票:0回答:1

我有一个ML模型(文本嵌入),该模型输出一个很大的1024长度的浮点向量,我想将其保留在BigQuery表中。

向量中的各个值本身并不意味着任何东西,整个向量都是您感兴趣的特征。因此,我想将这些列表存储在BigQuery的单个列中,而不是将每个浮动对象存储在一个列中。此外,向原本只是4或5行的表中添加额外的1024行似乎是个坏主意。

是否有在BigQuery的列中存储python列表或np.array的方法(也许首先将它们转换为json或沿这些方式转换?)

python arrays google-bigquery embedding
1个回答
0
投票

也许不是您要找的东西,但是以下选项是您要达到的最接近的解决方法。

首先,您可以将数据保存到本地只有一列的CSV文件中,然后将load that file保存到BigQuery中。您也可以从本地计算机上将other file formats加载到BigQuery中。我个人会使用CSV。

我通过在数据集中创建一个空表而不添加字段来进行了实验。然后,将一列随机数据保存在CSV文件中之后,我使用了第一个链接中提到的代码。

如果遇到有关权限的以下错误,请参阅this解决方案。它使用身份验证密钥代替。

google.api_core.exceptions.Forbidden: 403 GET https://bigquery.googleapis.com/bigquery/v2/projects/project-name/jobs/job-id?location=EU: Request had insufficient authentication scopes.

此外,如果出现以下错误,可能会发现this链接很有用:

google.api_core.exceptions.BadRequest: 400 Provided Schema does not match Table my-project:my_dataset.random_data. Cannot add fields (field: double_field_0)

除了从本地文件加载数据外,还可以将数据文件上传到Google Cloud Storage和load the data from there。支持多种文件格式,例如Avro,Parquet,ORC,CSV和换行符分隔的JSON。

最后,可以使用API​​将streaming the data直接添加到BigQuery表中,但是不能通过免费层使用。

© www.soinside.com 2019 - 2024. All rights reserved.