我正在尝试使用之前有效的代码将数据从BigQuery导出到GCS:
logger.log("Exporting BigQuery data for date:" + dayString + "<br/>");
JobConfigurationExtract extractConfig = new JobConfigurationExtract();
extractConfig.setDestinationFormat("NEWLINE_DELIMITED_JSON");
String applicationId = ServerUtils.getApplicationId();
String dataFile = "gs://"+applicationId+"_analytics/" + accountName + "-" + dayString + "-*.json";
extractConfig.setDestinationUri(dataFile);
String tableName = dayString.replaceAll("-","_");
TableReference bigQuerytableToExtractFrom = new TableReference().setProjectId(BigQueryUtils.PROJECT_NUMBER).setDatasetId(getDatasetName(accountName)).setTableId(tableName);
extractConfig.setSourceTable(bigQuerytableToExtractFrom);
JobConfiguration config = new JobConfiguration().setExtract(extractConfig);
Job job = new Job().setConfiguration(config);
Job queuedJob = BigqueryUtils.getClient().jobs().insert(BigQueryUtils.PROJECT_NUMBER, job).execute();
String jobIdString = queuedJob.getJobReference().getJobId();
jobIdString = jobIdString.substring(jobIdString.indexOf(':')+1);
return jobIdString;
但是,今天的工作信息总是会返回:
{"errorResult":{"message":"Unexpected. Please try again.","reason":"internalError"},"errors":[{"message":"Unexpected. Please try again.","reason":"internalError"}],"state":"DONE"}
BigQuery今天有问题吗?如果是,那么在预期修复时会有ETA吗?
根据Pentium 10的建议,这里有几个失败的工作ID:job_nGY3gTVibV07Y38PWJRIQ79SxaE,job_lJJBUibG_W42Lrl8Bwux0_RD_yw,
答案 0 :(得分:4)
啊......问题是您尝试导出的表已通过流式导入写入。这当前不起作用,因为我们的导出管道不知道如何读出流缓冲区。我提交了一个错误。
作为一种解决方法,如果您复制表(通过bq cp
,通过Web UI),它应该生成一个可导出的表,尽管可能缺少最后几分钟的数据。如果您想要一个绝对最新版本的表,可以使用allowLargeResults和目标表运行select *
查询,然后将其导出。