我正在尝试使用python从大查询中获取数据。代码在我的笔记本电脑上运行良好,但在Linux服务器上抛出内存错误。是否可以对其进行优化,使其也可以在服务器上运行?你知道吗
错误:表有500万行…Linux机器有8 GB ram…错误“内存不足”,进程被终止
代码如下:
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/Users/Desktop/big_query_test/soy-serenity-89ed73.json"
client = bigquery.Client()
# Perform a query.
QUERY = “SELECT * FROM `soy-serenity-89ed73.events10`”
query_job = client.query(QUERY)
df = query_job.to_dataframe()
我可以建议两种方法:
选项1
SELECT
将数据分块存储,以减少每次迭代时从BigQuery接收的数据的大小。 例如,您的表是分区,您可以执行以下操作:其中currentLoopDate将是python代码中的一个日期变量(类似的选项是使用
ROW_NUMBER
选项2
通过使用BigQuery client library,您可以使用作业.插入API并将
configuration.query.priority
设置为批处理。你知道吗有关更多详细信息,请参见link 获取jobId之后,使用Jobs.getQueryResults编写一个循环,通过设置API的
maxResults
参数来获取数据块相关问题 更多 >
编程相关推荐