【问题标题】:Error : Still Getting Error after setting allowLargeResults to true in job configuration?错误:在作业配置中将 allowLargeResults 设置为 true 后仍然出现错误?
【发布时间】:2016-10-17 13:50:27
【问题描述】:

我在我的代码中编写了 bigquery。 我想获取更大的结果。

我还设置了属性 allowLargeResult:true ,但我仍然收到错误:响应太大而无法返回。考虑在您的作业配置中将 allowLargeResults 设置为 true。有关详细信息,请参阅 http s://cloud.google.com/bigquery/troubleshooting-errors

这是我的 Node.js 代码:

var google = require('googleapis');
var bigquery = google.bigquery('v2');

var authClient = new google.auth.JWT(
    'arjun-dev@mybank-bigquery.iam.gserviceaccount.com',
    'keyA.pem',
    null, ['https://www.googleapis.com/auth/bigquery']);

var request2 = {
    projectId: 'project-bank',
    jobId:'job_LHMRhoUfM038QA4jPZHaOESI3Uo',
    startIndex: 0,
    maxResults: 100000,
    timeoutMs: 10000,
    configuration:{
        allowLargeResults: true
    },      
    auth: authClient
};

var list1 = bigquery.jobs.getQueryResults(request2, function(err, result) {
    if (err) {
        console.log("### 2 " + err);
    } else {
        console.log(result);
        res.send(result);
    }
});

请帮忙!

【问题讨论】:

    标签: javascript node.js google-bigquery


    【解决方案1】:

    您的结果可能太大而无法返回,并且您缺少目标表,因为当您设置allowLargeResults true 时这是强制性的,因为您无法返回大结果,而是需要写入目标表。如果以后要获取数据,需要先将表导出到GCS,然后再从GCS下载。

    返回大型查询结果

    通常,查询压缩后的最大响应大小为 128 MB。如果您计划运行可能返回更大结果的查询,您可以在作业配置中将 allowLargeResults 设置为 true。

    即使结果集很小,返回大结果的查询也需要更长的时间来执行,并且会受到额外的限制:

    • 您必须指定目标表。
    • 您不能指定顶级 ORDER BY、TOP 或 LIMIT 子句。这样做会抵消使用 allowLargeResults 的好处,因为无法再并行计算查询输出。
    • 只有与 PARTITION BY 子句结合使用时,窗口函数才能返回大型查询结果。

    【讨论】:

    • 是的,我正在获取 800 万条记录..当我指定我的 DESTINATION TABLE 时,结果将转到他们的...所以我必须再次查询目标表.. 对吗? ?
    • 您需要对表格进行分页,或者将表格导出为文件
    • 检查您正在使用的库,他们可能有分页示例
    猜你喜欢
    • 2012-03-12
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 2021-02-05
    • 2019-04-29
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多