不会上传任何数据,但使用 java 的 bigquery 加载作业中的作业状态为 DONE



我正在尝试上传格式正确的CSV文件。如果我尝试只上传 3 行数据,那么它可以工作,但对于大文件,有时它会说套接字超时异常,我们刚刚完成的工作。此数据集位于其他位置。

Bigquery bigquery = GoogleConnector.getBigQuery();
TableSchema schema = new TableSchema();
List<TableFieldSchema> tableFieldSchema = 
getTableFieldSchema("mostRecentObservation");
schema.setFields(tableFieldSchema);
Table table = new Table();
table.setSchema(schema);
TableReference tableRef = new TableReference();
tableRef.setDatasetId("MetroMallsEU");
tableRef.setProjectId(projectId);
tableRef.setTableId("mostRecentObsTest");
table.setTableReference(tableRef);
FileContent content = new FileContent("application/octet-stream", 
new File(fileNameToLoad));
Job job = new Job();
JobConfiguration config = new JobConfiguration();
JobConfigurationLoad configLoad = new JobConfigurationLoad();
configLoad.setSchema(schema);
configLoad.setDestinationTable(tableRef);
configLoad.setEncoding("UTF-8");
configLoad.setCreateDisposition("CREATE_IF_NEEDED");
configLoad.setSourceFormat("CSV");
//        configLoad.setSkipLeadingRows(1);
config.setLoad(configLoad);
job.setConfiguration(config);
try {
Bigquery.Jobs.Insert insert = bigquery.jobs().insert(projectId, 
job, content);
insert.setProjectId(projectId);
JobReference jobRef = insert.execute().getJobReference();
String jobId = jobRef.getJobId();
String status;
while (!bigquery.jobs().
get(projectId, jobId).execute().getStatus().getState().equalsIgnoreCase("DONE")) {
status = bigquery.jobs().
get(projectId, jobId).execute().getStatus().getState();
System.out.println("Status: " + status);
Thread.sleep(1000);
}
}catch (Exception e){
e.printStackTrace();
}

检查文档以了解作业status属性 -

status.state只是告诉你工作是否完成 如果已完成("完成"( - 您仍然需要检查它是如何完成的 - 有或没有错误 - 您可以为此使用status.errorResult属性

最新更新